Здравствуйте, victor_kr, Вы писали:
_>Я не профессионал многопоточности, но возможно, можно сделать так.
_>Создать объект для блокировки:
_>private static object dictionaryLock = new object();
_>Обернуть все обращения к dictionary конструкцией lock (dictionaryLock) {...}.
_>Таким образом вы сделаете работу с dictionary потокобезопасной. Остальная часть кода (длительно выполняющаяся) будет запускаться однократно для каждого ID только после потокобезопасной проверки словаря.
Интересно, а у object вроде бы нет свойств типа "сигнальное состояние". Соотвественно lock( myobject ) наверное управляет состоянием посредством ссылки на object , а сам object при этом не затрагивается . Почему бы в таком случае не лочить сразу статический объект Dictionary , т.е.
lock( myDictionary )
{
/// работа с myDictionary.
}