Hus*_*awi 4 c# synchronization
根据Eric Gunnerson的说法
别
Do锁定私有变量,而不是用户可以看到的内容如果需要私钥锁定,请使用"object key = new object()"
是什么原因??
Dar*_*rov 14
是什么原因??
因为任何非私有的东西意味着可以从外部使用来锁定其他人或某些代码,这些代码在您的控件之外导致死锁.
最好的做法是锁定私有静态变量,如下所示:
private static object _syncRoot = new object();
Run Code Online (Sandbox Code Playgroud)
然后:
lock(_syncRoot)
{
...
}
Run Code Online (Sandbox Code Playgroud)
私有实例变量也可能是危险的,因为类的实例不是您作为类所拥有的实现者的东西.它是拥有该实例的类的使用者.