В данный момент у меня очень странная проблема с блокировкой словаря. У меня есть две разные темы, которые обращаются к словарю, одна из них добавляет некоторые записи, а другая пытается их прочитать. Все хорошо, делая записи, самая странная проблема возникает, когда я пытаюсь извлечь некоторые значения из словаря.
Вот как это выглядит
lock (myDictionary)
{
//Add an entry here for a key.
}
// Возрождение
lock(myDictionary)
{
if (myDictionary.ContainsKey(key))
myDictionary.TryGetValue(key, out store);
}
Как только поток вводит вышеуказанный код, ключи не найдены. НО если я напишу следующее
lock(myDictionary)
{
Console.WriteLine(myDicionary.Count)
if (myDictionary.ContainsKey(key))
myDictionary.TryGetValue(key, out store);
}
Из ниоткуда я вижу тот же словарь, содержащий ключи, которые не были найдены в предыдущем коде. Теперь вы, ребята, можете поспорить, что произошедшая задержка ввода-вывода вызвала у словаря достаточно времени для сохранения некоторых значений, но у меня нет никаких тайм-аутов или чего-то такого, что заставляет меня терять какую-либо обработку, что это означает, пока словарь не содержит некоторые значения для извлечения следующего шага обработки не произойдет, и моя программа будет ждать, пока не получит некоторые значения. Но, к сожалению, этого не произойдет, если я не поставлю Console.WriteLine ... Кто-нибудь сталкивался с такой ситуацией раньше?