Таймер запускается только один раз [C# / Lync SDK]
Я использую Lync SDK 2013 и хочу проверить подключение клиента. Если ClientState.SignedIn
это правда, все хорошо, если нет, я хочу запустить таймер, который работает, пока состояние не вернет истину.
- Я не запускаю свой клиент Lync
- Я запускаю свое приложение WinForms
- приложение показывает "офлайн"
- таймер начинает работать (попробуйте восстановить соединение)
- Я запускаю клиент Lync
- приложение показывает "онлайн"
- таймер останавливается
- Я закрываю свой клиент Lync
- таймер не запускается снова
Мой код
public Client() // Initialize the timer in the constructor
{
connectionTimer = new Timer
{
Interval = 1000
};
connectionTimer.Tick += connectionTimer_Tick;
if (!IsSignedIn) // on application start
{
TryConnect();
}
}
private Timer connectionTimer;
public LyncClient Instance // get the current instance of the Lync Client
{
get
{
LyncClient client = null;
try
{
client = LyncClient.GetClient(); // get the client
if (client != null)
{
client.StateChanged += Client_StateChanged; // apply the state changed event to the client
}
}
catch (Exception)
{
}
return client;
}
}
public bool IsSignedIn // is the Lync client running?
{
get
{
bool instanceActive = Instance != null;
bool signedIn = false;
if (instanceActive)
{
signedIn = Instance.State == ClientState.SignedIn;
}
return signedIn;
}
}
public void TryConnect() // start the connection timer
{
connectionTimer.Start();
}
public void CheckConnection()
{
if (IsSignedIn) // is the lync client back online?
{
connectionTimer.Stop(); // stop the timer after reconnect
}
}
private void Client_StateChanged(Object source, ClientStateChangedEventArgs e)
{
if (e.NewState != ClientState.SignedIn) // the lync client is not signed in?
{
TryConnect();
}
}
private void connectionTimer_Tick(object sender, EventArgs e)
{
CheckConnection(); // check every second if the client is signed in
}
}
Поэтому я действительно хочу знать, как снова запустить этот таймер при закрытии клиента Lync.