Я использую 2 потока, чтобы действовать как производитель / потребитель, используя двойную очередь (http://www.codeproject.com/KB/threads/DoubleQueue.aspx). Иногда в моем 2-м потоке я получаю объект NULL, но он не должен быть таким, каким я его заполнил в первом потоке .
Я пробовал это:
if(myObject.Data == null)
{
Console.WriteLine("Null Object") // <-- Breakpoint here
}
Когда я достигаю точки останова, я могу смотреть myObject.Data, и действительно, он равен NULL, но когда я нажимаю F10, а затем перехожу к следующей строке (которая }
), myObject.Data равен , а не НОЛЬ.
Я также добавил блокировку на myObject до
если ....
чтобы быть уверенным, что никто не будет использовать этот объект.
Как это возможно и что я могу сделать?