Таймер запускается только один раз [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.

0 ответов

Другие вопросы по тегам