C#关于lock竟然还有不能锁住的时候???
代码有静态属性 public static int HuizongPoint { get; set; } = 0;
想用lock实现对该属性的同步操作,但是根据日志显示,发送没用!!!这是为什么?
测试步骤如下:
1、添加锁的对象 private static readonly object oHuizongPoint = new object();
2、在函数方法中加入lock锁,并在进入锁和退出锁中加入一条日志。
3、多线程执行后,发现多线程是一起进入函数的,并没有实现等待锁,同步执行的操作。
回答
拿了另外一个代码测试了一下,实验得出是因为:
1、使用了语句txtRValue.Invoke(new EventHandler....放在了lock前面。
2、后续如果添加了Application.DoEvents();或txtRValue.Invoke(new EventHandler(delegate....就会导致lock资源释放,实现不了lock锁定
3、解决办法,是将lock放在txtRValue.Invoke前面
以上是 C#关于lock竟然还有不能锁住的时候??? 的全部内容, 来源链接: utcz.com/a/30143.html