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