【发布时间】:2011-08-11 00:41:54
【问题描述】:
我有一个缓慢的方法,在计时器(System.Timers.Timer)上执行它。有时它的执行时间比定时器的超时时间长,这会导致定时器等待。我希望将计时器设置为 30 毫秒,例如,在 30 毫秒后,重置方法,而不是等待。我应该使用哪种计时器?
编辑:
void OnTimerElapsed() {
SomeMethod(args1);
SomeMethod(args2);
SomeMethod(args3);
}
SomeMethod 位于另一个程序集中。这是一种从另一个应用程序请求数据的同步方法。我不知道为什么它有时会挂起。这会导致计时器暂停,直到 SomeMethod() 继续。
【问题讨论】:
-
“重置方法”应该是什么意思?你确定不是在谈论 Thread.Abort?
-
是的,我想在定时器超时后中止操作。
-
FWIW 中止线程被认为是非常糟糕的做法,因为您不知道如何从可能的错误状态中恢复、处理资源等。
-
没有人会建议您放弃该方法。您必须告诉很多关于该方法的信息,以帮助我们帮助您找到一种很好地阻止它的方法。需要一个代码 sn-p 来显示它在做什么以及为什么需要这么长时间。