項目は既に追加されています。辞書のキー: 'System.Object' 追加されるキー: 'System.Object'
WebServiceの非同期メソッドではまったのでメモ
以下のメッセージがでて調査。
項目は既に追加されています。辞書のキー: 'System.Object' 追加されるキー: 'System.Object' 場所 System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) 場所 System.Collections.Hashtable.Add(Object key, Object value) 場所 System.Collections.Hashtable.SyncHashtable.Add(Object key, Object value) 場所 System.Web.Services.Protocols.SoapHttpClientProtocol.InvokeAsync(String methodName, Object[] parameters, SendOrPostCallback callback, Object userState)
コールバック先のメソッドの問題かと思って調べていたが、問題なのは呼出側だった。
修正前:hogeAsync(hoge,null);
修正後:hogeAsync(hoge,Guid.NewGuid());
これで回避。
Web参照で自動生成されるuserStateの引数には、ちゃんと識別可能なものが必要らしい。手抜き禁止。
ついでにlockステートメントを追加すべきか調査した方が良いかも
改訂版 C#入門 第9章 ステートメント http://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_009/cs2_009_04.html