我遇到了一個非常奇怪的(對我來說)異常。這種事很少,但確實...默認構造函數後的空引用異常
我的類不是靜態的,而是隻有一個靜態屬性:
static Dictionary<string, ManualResetEvent> resetEvents =
new Dictionary<string, ManualResetEvent>();
當我嘗試添加首次復位事件 - 我有時會得到一個空引用異常。可能這與兩個不同的線程試圖添加實例有關?
static ManualResetEvent resetEventsGet(string key)
{
if (resetEvents.ContainsKey(key))
return resetEvents[key];
ManualResetEvent reste = new ManualResetEvent(false);
resetEvents.Add(key, reste); //System.NullReferenceException: 'Object reference not set to an instance of an object.' HOW???
return reste;
}
當我在「watch」或即時窗口中查找時,在任何地方都沒有空(字典或resetEvent)。
p.s - 我將它標記爲visual studio 2017,因爲它之前從未發生過,儘管代碼沒有改變。 有什麼想法?謝謝
這很奇怪,因爲它好像超過了'ContainsKey'調用。你在哪裏沒有'resetEvents = null'? – juharr
這對我沒有意義。爲什麼這個異常不在'if(resetEvents.ContainsKey(key))'行中?你確定你沒有從代碼中的其他任何地方使該字段爲空嗎? – dcg
對'new ManualResetEvent(false)'的調用是做什麼的?它不會使字段'null'? – Marcello