c# lock详解
lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。但有一点应该注意,msdn上解释说,应该避免对public类型的锁定,否则实例将超出代码的控制范围,下面例子将对此做出解释:
public void Method2()
{
lock (this)
{
System.Windows.Forms.MessageBox.Show("Method2 End");
}
}
如果在同一个Class1的实例中,该Method2能够互斥的执行。但是如果是2个Class1的实例分别来执行Method2,是没有互斥效果的。因为这里的lock,只是对当前的实例对象进行了加锁。
浙公网安备 33010602011771号