System.ApplicationException:DeleteTimerNative中的应用程序出错

时间:2013-02-07 05:44:45

标签: c# .net winforms timer

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

代码如下

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)

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

1 个答案:

答案 0 :(得分: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

}