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

回到顶部