關於Dictionary的線程安全問題


C# Dictionary 為引用類型,在多線程的代碼中,如果在單線程的意義上存在着Add和Foreach的順序結構,線程數量越多就越容易出現異常 :Error:System.InvalidOperationException: Collection was modified; enumeration operation may not execute.

我選擇的處理方式是使用線程安全的集合ConcurrentDictionary 進行單獨處理,添加的粒度需要根據代碼結構自己考量,初始化例子如下:

 

Dictionary<string, string> tempO365ContainerColls =  new Dictionary<string, string> ();

ConcurrentDictionary<string, string> TempO365ContainerColls = new ConcurrentDictionary<string, string>(tempO365ContainerColls , StringComparer.OrdinalIgnoreCase);

MSDN 中文文檔鏈接 https://msdn.microsoft.com/zh-cn/library/dd287191(v=vs.110).aspx 

 


免責聲明!

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



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