我試圖用Alchemy Websockets在其示例中使用ConcurrentDictionary集合將一個快速小程序放在一起。添加到ConcurrentDictionary中的項立即進入殭屍狀態
在我寫的代碼中,我試圖向ConcurrentDictionary添加一個新的客戶端。當我試圖訪問這個客戶端時,我發現我的腳本在其他方面失敗了,並且縮小到我添加到ConcurrentDictionary中的項目立即進入「殭屍」狀態。
下面是測試代碼,我添加客戶端:
Client test = new Client(ctx, sessId);
Clients.TryAdd(test, String.Empty);
Console.WriteLine ("Adding new client: " + sessId);
如果用我的調試器在這方面的突破,我可以看到「測試」包含正確的客戶信息,但將它添加到後立即它表示「對象處於殭屍狀態(來自HRESULT的異常:0x8013134F)」。
字典聲明在我的課這樣:
protected ConcurrentDictionary<Client, string> Clients = new ConcurrentDictionary<Client, string>();
我知道我可能做一些愚蠢明顯,但怎麼辦?
根據[Mono bugzilla中的錯誤](https://bugzilla.xamarin.com/show_bug.cgi?id=5361),這可能只是調試器窗口中的錯誤。你確定這實際上是對你造成問題嗎? – svick 2012-07-30 15:49:32
我很確定這是造成問題的原因。我最初發現這個問題時,即使當我知道它必須是真實的時候,我建立的條件總是等於假。打破比較顯示了我的一個比較變量中的正確字符串,另一端是我的ConcurrentDictionary的成員,並帶有上述問題。當我Console.WriteLine()應該包含我的數據的殭屍對象,它只是輸出一個空行,所以我認爲這是證據它不是調試器的錯誤。 – DWilliams 2012-07-30 16:02:00
好的,在這種情況下,你可以發佈簡短但完整的示例程序來顯示這個問題嗎? – svick 2012-07-30 16:05:34