關於Dictionary的執行緒安全問題

2022-02-22 15:08:22 字數 484 閱讀 5376

c# dictionary 為引用型別,在多執行緒的**中,如果在單執行緒的意義上存在著add和foreach的順序結構,執行緒數量越多就越容易出現異常 :error:system.invalidoperationexception: collection was modified; enumeration operation may not execute.

我選擇的處理方式是使用執行緒安全的集合concurrentdictionary 進行單獨處理,新增的粒度需要根據**結構自己考量,初始化例子如下:

dictionarytempo365containercolls =  new dictionary();

concurrentdictionarytempo365containercolls = new concurrentdictionary(tempo365containercolls , stringcomparer.ordinalignorecase);

msdn 中文文件鏈結  

關於dictionary的操作

一 定義 字典是無序的 dic1 print dic1,type dic1 字典內的元素是由鍵值對組成,鍵應該是字串,值可以是任意型別 二 操作 1 增 改 增 dic1 dom 3,2 增加乙個鍵值對,如果已經存在就是修改 print dic1 dic1.setdefault weight 有鍵值...

Dictionary執行緒的安全使用

本文屬於 用於記錄。using system using system.collections using system.collections.generic using system.diagnostics using system.reflection using system.runtime...

巧用Dictionary物件實現執行緒安全類 例項

在前一面篇文章 設計安全的多執行緒應用程式 執行緒安全 中,我們講了,什麼是執行緒安全,列舉一些常見的執行緒安全和非執行緒安全的情況。還沒對執行緒安全了解的同學請點上面的鏈結。現在我們來看執行緒不安全的本質是什麼。我們來想想在單執行緒的情況下安全,為什麼在多執行緒的情況下是不安全的呢?無非就是因為多...