Gui*_*ume 2 c# null multithreading object
我使用双线程(http://www.codeproject.com/KB/threads/DoubleQueue.aspx)使用2个线程来充当产品/消费者.有时在我的第二个线程中,我得到一个NULL的对象,但它不应该像我在第一个线程中填充它一样.
我试过这个:
if(myObject.Data == null)
{
Console.WriteLine("Null Object") // <-- Breakpoint here
}
Run Code Online (Sandbox Code Playgroud)
当我的断点点击时,我可以看到myObject.Data,实际上它是NULL,但是当我点击F10然后转到下一行(这是})myObject.Data 不是 NULL.我之前也在myObject上添加了一个锁
如果....
确保没有人会使用这个物体.
怎么可能,我该怎么办?
锁定myObject意味着你要锁定myObject引用的对象.如果另一个线程更改了myObject的值,则它是一个没有人锁定的新对象.
对于锁,我建议您声明仅用于锁定的特定对象,例如:
private static readonly object MyLock = new object();
Run Code Online (Sandbox Code Playgroud)