1

私は、例で ConcurrentDictionary コレクションを使用するAlchemy Websocketsを使用して、簡単な小さなプログラムをまとめようとしています。

私が書いたコードでは、新しいクライアントを ConcurrentDictionary に追加しようとしています。このクライアントにアクセスしようとすると、スクリプトが他の領域で失敗することに気付き、ConcurrentDictionary に追加するアイテムに絞り込んで、すぐに「ゾンビ」状態になります。

クライアントを追加するテストコードは次のとおりです。

Client test = new Client(ctx, sessId);
Clients.TryAdd(test, String.Empty);
Console.WriteLine ("Adding new client: " + sessId);

デバッガーを使用してこの領域を中断すると、"test" に適切なクライアント情報が含まれていることがわかりますが、それを Clients コレクションに追加するとすぐに、"オブジェクトはゾンビ状態です。(HRESULT からの例外: 0x8013134F)" と表示されます。 .

辞書は私のクラスで次のように宣言されています。

protected ConcurrentDictionary<Client, string> Clients = new ConcurrentDictionary<Client, string>();

私はおそらくばかげて明白なことをしていることを知っていますが、何が得られますか?

4

1 に答える 1

2

ConcurrentDictionary に入るアイテムがゾンビ状態になるという結論であれば、どのオブジェクトもゾンビ状態になると想定していますよね? 次に、クライアント クラスまたは WebSockets ライブラリにまったく結合されていない、より小さなプログラム、削減されたテストケースを作成して、その仮定をテストしてみてください。

それでも問題が解決しない場合は、おめでとうございます。問題を絞り込んでいます。私が行う 2 番目のステップは、小さなプログラムを取得して、MS.NET (Mono ではなく) 内で実行することです。Mono ではなく MS.NET で動作する場合は、Mono のバグ トラッカー ( http://bugzilla.xamarin.com/ ) にバグを報告します。

ただし、プログラムが MS.NET でも動作しない場合は、何か問題がある可能性があります。

于 2012-07-30T20:47:29.437 に答える