我使用 Lync SDK 2013。創(chuàng)建新對話(任何類型,不僅僅是音頻/視頻)時,我的conversation_added事件會觸發(fā)多次。永久訪問 LyncClient 需要每秒創(chuàng)建一次計(jì)時器檢查,以確保與 lync 應(yīng)用程序的有效連接。我創(chuàng)建了一個應(yīng)該在 WinForms 應(yīng)用程序中工作的片段public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); InitializeConnectionTimer(); } private LyncClient client; private ConversationManager conversationManager; private Timer connectionTimer; private bool networkAvailable; private void InitializeConnectionTimer() { connectionTimer = new Timer { Interval = 1000 }; connectionTimer.Tick += connectionTimer_Tick; connectionTimer.Start(); } private void CheckConnection() { TrySetClient(); SetConversationManager(); } private void TrySetClient() { client = null; try { client = LyncClient.GetClient(); client.ClientDisconnected += Client_Disconnected; client.StateChanged += Client_StateChanged; } catch (Exception) { } } private void SetConversationManager() { if (client != null) { conversationManager = client.ConversationManager; conversationManager.ConversationAdded += Conversation_Added; } else { conversationManager = null; } } private void Client_Disconnected(object sender, EventArgs e) { CheckConnection(); } private void Client_StateChanged(object sender, ClientStateChangedEventArgs e) { CheckConnection(); }你可以在這里看到完整的例子https://pastebin.com/1tR3v8We我認(rèn)為出現(xiàn)錯誤是因?yàn)槲铱偸菍㈩~外的事件偵聽器附加到 LyncClient。但我必須TrySetClient()每秒檢查客戶端連接,因?yàn)?Skype 應(yīng)用程序可能會關(guān)閉、崩潰等。我怎樣才能解決這個問題?
1 回答

翻閱古今
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個贊
這不是 lync-client-sdk 問題,而是一個經(jīng)典的 C# 事件問題。
在連接新手柄之前,您需要移除當(dāng)前的手柄。您應(yīng)該在清除客戶端指針之前執(zhí)行此操作。
如果您不知道是否已連接處理程序,則可以使用一個“技巧”。您可以刪除一個處理程序,如果它不存在,它就會被忽略。
這允許您執(zhí)行以下操作:
client = LyncClient.GetClient();
client.ClientDisconnected -= Client_Disconnected;
client.ClientDisconnected += Client_Disconnected;
client.StateChanged -= Client_StateChanged;
client.StateChanged += Client_StateChanged;
如果您對所有手柄都這樣做,那么這將解決您的問題。
更強(qiáng)烈建議您在完成處理后很好地移除句柄,因?yàn)樽屗鼈儽3诌B接可能會使您的類保留在內(nèi)存中。如果您不小心,這可能會導(dǎo)致實(shí)時泄漏。
- 1 回答
- 0 關(guān)注
- 235 瀏覽
添加回答
舉報
0/150
提交
取消