0

在我们的代码中,我们有一个计时器,它将检查服务器是否已连接。如果未连接将尝试重新连接服务器。

代码如下

private void timer_Elapsed(object source, ElapsedEventArgs e)
{
   timer.Stop();
   if (timer.Interval != serverTimeOut)
   {
     timer.Interval = serverTimeOut;
   }

   timer.Start();
   //below the code to check whether server connected or not

}

我们得到了这样的例外

Class: System.Threading.TimerBase
Function: DeleteTimerNative
Exception: System.ApplicationException: Error in the application.
   at System.Threading.TimerBase.DeleteTimerNative(SafeHandle notifyObject)
   at System.Threading.TimerBase.Dispose()
   at System.Threading.Timer.Dispose()
   at System.Timers.Timer.set_Enabled(Boolean value)
   at System.Timers.Timer.Stop()
   at ServerConnection.timer_Elapsed(Object source, ElapsedEventArgs e)

在经过的事件中,我们将停止计时器并更改间隔,然后再次启动计时器。这个步骤会导致任何异常吗?

4

1 回答 1

0

你为什么要停止和启动计时器并设置间隔。您应该只检查服务器是否已连接。

更新

您正在停止计时器,这会删除事件内的本机计时器。不是一个好主意。你不能只设置间隔而不停止和启动。

private void timer_Elapsed(object source, ElapsedEventArgs e)
{
   if (timer.Interval != serverTimeOut)
     timer.Interval = serverTimeOut;

   //below the code to check whether server connected or not

}
于 2013-02-07T05:54:20.610 回答