現象
Microsoft Lync Server 2013 持続チャット SDK を使用してアプリケーションを開発することを想定しています。アプリケーションは複数のエンドポイントを作成し、エンドポイント上のユーザーが複数のスレッドで操作を実行するアプリケーションを使用します。などのエンドポイント上のユーザー チャット ルームに参加、メッセージを送信、チャット ルームのままにしておきます。このような場合は、アプリケーションは次の処理不能な例外がスローされ、クラッシュし。
未処理の System.Collections.Generic.KeyNotFoundExceptionSystem.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 サイトを参照してください。