Я использую Lync SDK 2013. При создании нового разговора (любого типа, а не только аудио/видео) мое событие conversation_added
запускается несколько раз.
Наличие постоянного доступа к LyncClient требует создания проверки таймера каждую секунду для допустимого подключения к приложению lync.
Я создал фрагмент, который должен работать в приложениях WinForms.
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();
}
private void connectionTimer_Tick(object sender, EventArgs e)
{
CheckConnection();
}
private void Conversation_Added(object sender, ConversationManagerEventArgs e)
{
System.Diagnostics.Process.Start("https://www.google.com/"); // open Browser window here
}
}
и вы можете увидеть полный пример здесь
Я думаю, что ошибка возникает из-за того, что я всегда подключаю дополнительные прослушиватели событий к LyncClient. Но я должен проверять клиентское соединение на TrySetClient()
каждую секунду, потому что приложение Skype может закрыться, дать сбой и т. д.
Как я могу это исправить?