首页 新闻 会员 周边

c# lock 关于括号内和大括号内的内容

0
悬赏园豆:20 [已解决问题] 解决于 2012-04-12 14:04

想问  lock()小括号内 是写变量还是写类名还是写this  在功能上究竟有什么不同,到底什么意思.

最终不都是锁大括号里的内容吗?

求详解!!!!

问题补充:

官方说应避免锁定 public 类型,否则实例将超出代码的控制范围,这是什么意思,

求详解

自由VIVE的主页 自由VIVE | 初学一级 | 园豆:4
提问于:2012-04-06 09:05
< >
分享
最佳答案
0

只要是一個 object對象 就可以。可以是this,是指該類的實例。也可以

private ojbect o=new object();

lock(o){}

收获园豆:20
無限遐想 | 老鸟四级 |园豆:3740 | 2012-04-06 09:25
其他回答(6)
0

关注。。。

KivenRo | 园豆:1734 (小虾三级) | 2012-04-06 09:08
0

如果你的类是public的,lock(this)可能引发死锁问题,因为是公有的,在别的线程,别的组件内部都有可能使用你的类,同样也都可以使用lock,如果你内部使用了lock,而在其他的线程,组件中也使用了lock,可能导致死锁发生。

zsounder | 园豆:2819 (老鸟四级) | 2012-04-06 09:39
0

打酱油的哦~~

哈哈哈dd | 园豆:202 (菜鸟二级) | 2012-04-06 09:41
0

学习了...

轻狂の书生 | 园豆:1042 (小虾三级) | 2012-04-06 10:02
0
麒麟.NET | 园豆:3614 (老鸟四级) | 2012-04-06 17:15
0

一般小括号中放一个只读的object对象  private readonly object  objLock =new object ();

lock(objLock)

{

//

}

多夢的歲月 | 园豆:179 (初学一级) | 2012-04-08 16:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册