Hashtable.Synchronized()、Hashtable.SyncRoot


Hashtable.Synchronized(new HashTable())將HashTable封裝成一個線程安全的SyncHashTable。

但該方法在枚舉整個集合時本質上不是一個線程安全的過程,即使某個集合已經同步,其他線程仍可以修改該集合,這會導致枚舉數引發異常。

若要確保枚舉過程中的線程安全,可以在整個枚舉期間鎖定集合,或者捕獲由其他線程進行更改所導致的異常。可以使用Hashtable.SyncRoot在整個枚舉過程中鎖定集合。

var myCollection = new HashTable();
lock(myCollection.SyncRoot)
{
     foreach(var item in myCollection) // 枚舉過程
     {
          //insert your code here
     }  
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM