看了MSDN[中文]好几篇,没太懂,存在一些问题,请教一下:
1.Hashtable.Synchronized(new Hashtable)创建的Hashtable可以保证Add,Update,Remove方法正确同步吗?
2.锁定Hashtable本身和锁定Hashtable.SyncRoot有什么区别?
3.安全的遍历Hashtable需要锁定Hashtable.SyncRoot?
1.Hashtable.Synchronized(new Hashtable)创建的Hashtable可以保证Add,Update,Remove方法正确同步吗?
2.锁定Hashtable本身和锁定Hashtable.SyncRoot有什么区别?
3.安全的遍历Hashtable需要锁定Hashtable.SyncRoot?
1.Hashtable.Synchronized(new Hashtable)创建的Hashtable在进行Add,Update,Remove操作时会锁住Hashtable.SyncRoot。
2.锁Hashtable本身和锁定Hashtable.SyncRoot本身是一样的。只不过Hashtable本身在Add,Update,Remove时会锁Hashtable.SyncRoot(Synchronized后的),所以锁Hashtable.SyncRoot可以减少自己手动的一些控制。
3.要想安全的话就需要锁定。
同步代码必须在 Hashtable 的 SyncRoot 上执行操作,而不是直接在 Hashtable 上执行. 看样子微软建议使用lock( myCollection.SyncRoot ).