TimerCallback没有在1秒延迟C#上调用

时间:2016-07-14 09:26:28

标签: c#

我只是试图在1秒延迟后执行一个方法 这种方法只能被调用一次。

我已经按照这些例子来尝试实现我想要的但无济于事:

  1. Jon Skeet's answer
  2. MSDN example
  3. 我目前的代码:

    SELECT 'id_system'
    FROM 'invent'
    WHERE 'id_system'=500
    OR 'id_system'=504
    

    CheckInternetConnection()

    private void NetworkIsActive() {
        // delay to allow the network to properly set firs
        AutoResetEvent autoEvent = new AutoResetEvent(false);
        TimerCallback timerDelegate = new TimerCallback(this.CheckInternetConnection);
        TimeSpan delayTime = new TimeSpan(0, 0, 1);
        try {
            Timer updateTimer = new Timer(timerDelegate, autoEvent, delayTime, TimeSpan.FromMilliseconds(-1));
        } catch (ArgumentOutOfRangeException Ex) {
            throw Ex;
        } catch (ArgumentNullException NEx) {
            throw NEx;
        } catch (Exception x) {
            throw x;
        }
    }
    

    我也尝试将 state 参数设置为private void CheckInternetConnection(object state) { switch (NetworkActivities.IsInternetAvailable()) { case TRUE: this.ExternalIP = NetworkActivities.getExternalIP(); this.InternetConnection = ACTIVE; break; case FALSE: this.ExternalIP = EMPTY; this.InternetConnection = INACTIVE; break; } } ,但没有任何区别。

    永远不会调用

    null,并且CheckInternetConnection

    中不会抛出任何异常

    我宁愿这样做,因为我不赞成使用try...catch

2 个答案:

答案 0 :(得分:3)

Timer不能自我维持 - 您需要保留对它的引用,否则它将会消失。由于它是您所在地区的本地人,因此在您的方法结束之前,它有资格收集。

答案 1 :(得分:2)

你似乎错过了Timer.Start()所以你的计时器不会触发,你还没有启动它