Hashtable.Synchronized(new HashTable())將HashTable封裝成一個執行緒安全的SyncHashTable,
但該方法在列舉整個集合時本質上不是一個執行緒安全的程序,即使某個集合已經同步,其他執行緒仍可以修改該集合,這會導致列舉數引發例外,
若要確保列舉程序中的執行緒安全,可以在整個列舉期間鎖定集合,或者捕獲由其他執行緒進行更改所導致的例外,可以使用Hashtable.SyncRoot在整個列舉程序中鎖定集合,
var myCollection = new HashTable(); lock(myCollection.SyncRoot) { foreach(var item in myCollection) // 列舉程序 { //insert your code here } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/44845.html
標籤:C#
