例如,我可以去:正在訪問Dictionary <TKey,TValue> Keys屬性線程安全嗎?
string[] keys = new string[items.Count];
items.Keys.CopyTo(keys);
如果項目是:可能被另一個線程正在修改
Dictionary<string, MyObject>
實例? (它不清楚,如果當訪問Keys屬性時,Dictionary的內部工作會迭代集合 - 在這種情況下,我知道它不會是線程安全的)。
更新:我意識到我的上述示例不是線程安全的,因爲Dictonary的大小可能會在行之間改變。然而如何:
Dictionary<string, MyObject> keys = items.Keys;
string[] copyOfKeys = new string[keys.Count];
keys.Keys.CopyTo(copyOfKeys);
我知道字典不是線程安全的 - 這是否意味着訪問Keys屬性不是線程安全的? (我認爲只是意味着迭代和修改不是線程安全的)。 –
markmnl
根據MSDN,由Keys屬性返回的集合是對Dictionary的鍵的引用,因此在集合被修改時它可能會突然更改。 –