現象
Microsoft Lync Server 2013 持続チャット SDK を使用してアプリケーションを開発することを想定しています。アプリケーションは複数のエンドポイントを作成し、エンドポイント上のユーザーが複数のスレッドで操作を実行するアプリケーションを使用します。などのエンドポイント上のユーザー チャット ルームに参加、メッセージを送信、チャット ルームのままにしておきます。このような場合は、アプリケーションは次の処理不能な例外がスローされ、クラッシュし。
未処理の System.Collections.Generic.KeyNotFoundException
System.Collections.Generic.Dictionary'2.get_Item (TKey キー) で
Microsoft.Rtc.Collaboration.PersistentChat.Internal.ChatRoomCache.get_Item (Uri uri) にあります。
Microsoft.Rtc.Collaboration.PersistentChat.PersistentChatEndpoint.get_Item (Uri uri) にあります。
Microsoft.Rtc.Collaboration.PersistentChat.Internal.MessageHandler.HandlePartNotify (オブジェクトの messageIn) で
Microsoft.Rtc.Collaboration.PersistentChat.Internal.MessageHandler.ProcessQueuedMessage (TransportMessage メッセージ) に
Microsoft.Rtc.Collaboration.PersistentChat.Internal.MessageRouter.HandleMessage (オブジェクトの状態) で
System.Threading.ExecutionContext.RunInternal (ExecutionContext executionContext、ContextCallback コールバック、オブジェクトの状態、ブール値の preserveSyncCtx) で
System.Threading.ExecutionContext.Run (ExecutionContext executionContext、ContextCallback コールバック、オブジェクトの状態、ブール値の preserveSyncCtx) で
System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() で
System.Threading.ThreadPoolWorkQueue.Dispatch() で
原因
この問題は、2 つのスレッド間で発生するタイミングの問題によって発生します。1 つのスレッドは、ディクショナリ内の項目を削除し、別のスレッドが、ディクショナリ内の項目にアクセスしようとしたし、ときにアプリケーションはKeyNotFoundExceptionの未処理の例外をスローします。次に、アプリケーションがクラッシュします。
解決策
この問題を解決するには、次の累積的な更新プログラムをインストールします。
Lync Server 2013、コア コンポーネントの累積的な更新プログラム 5.0.8308.420 の2835432の説明: 2013年 7 月
詳細
Lync Server 2013 持続チャット SDK の詳細については、次のマイクロソフト web サイトを参照してください。