我只是试图在1秒延迟后执行一个方法 这种方法只能被调用一次。
我已经按照这些例子来尝试实现我想要的但无济于事:
我目前的代码:
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
答案 0 :(得分:3)
Timer
不能自我维持 - 您需要保留对它的引用,否则它将会消失。由于它是您所在地区的本地人,因此在您的方法结束之前,它有资格收集。
答案 1 :(得分:2)
你似乎错过了Timer.Start()所以你的计时器不会触发,你还没有启动它