狀況
假設您使用 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 回呼、 物件狀態,則為 True 的 preserveSyncCtx)
在 System.Threading.ExecutionContext.Run (ExecutionContext executionContext、 ContextCallback 回呼、 物件狀態,則為 True 的 preserveSyncCtx)
在 System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
在 System.Threading.ThreadPoolWorkQueue.Dispatch()
原因
這個問題被因兩個執行緒之間,就會發生計時問題。當一個執行緒中刪除項目在字典中,並接著另一個執行緒嘗試存取的字典中的項目時,應用程式後,會擲回未處理的KeyNotFoundException例外狀況。然後,應用程式當機。
解決方案
若要解決這個問題,安裝下列的累積更新︰
Lync 伺服器 2013,核心元件的累積更新 5.0.8308.420 的2835432描述︰ 年 7 月 2013年
更多的資訊
如需有關 Lync Server 2013 持續聊天 SDK 的詳細資訊,請前往下列 Microsoft 網站︰