症状
假定您开发的应用程序通过使用 Microsoft Lync 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()原因
此问题是由两个线程之间发生了计时问题引起的。当一个线程删除字典中的项,然后另一个线程尝试访问字典中的项时,该应用程序会引发未经处理的KeyNotFoundException异常。然后,该应用程序崩溃。
解决方案
若要解决此问题,请安装以下累积更新︰
Lync Server 2013,核心组件的累积更新 5.0.8308.420 2835432描述︰ 2013 年 7 月
详细信息
Lync 服务器 2013年持续聊天 SDK 有关的详细信息,请访问以下 Microsoft 网站︰