Essa classe deve usar o bloqueio de dados para multiencadeamento?

Eu tenho uma classe que contém alguns dados e há muitos threads usá-lo:

class MyClass
{
    static Dictionary<Key, Value> MyData;

    static IEnumerable<Data> Data
    {
        get
        {
            return MyData.Values;
        }
    }

    static void Reset()
    {
         MyData = GetMyData();
    }
}

Em algum momento (digamos uma vez por dia), o método Reset é chamado. Não quero adicionar bloqueio por causa do desempenho, mas não tenho certeza se tudo funcionará sem ele.

A pergunta é: devo usar qualquer tipo de bloqueio nesta classe?

questionAnswers(3)

yourAnswerToTheQuestion