我制作了一个 Window-Service,它在每个之后执行一个操作。我们已将计时器声明如下:
using System.Timers;
....
Int32 myInterval = 60000 * (Convert.ToInt32(ConfigurationManager.AppSettings["lpInterval"].ToString()));
_myTimer = new Timer();
_myTimer.Interval = myInterval;
_myTimer.Elapsed += new ElapsedEventHandler(TimerElapsed);
//Timer-Tick
private void TimerElapsed(object source, ElapsedEventArgs e)
{ PerformAction(); }
注意到了什么:如果PerformAction()
需要比我更长的时间interval
(由于 WCF 服务或服务器问题) ,则启动并执行一个新'instance'
的。PerformAction
所以彼此PerformAction
运行两次(和)。parallel
这是什么原因?为什么之前的没有PerformAction
被取消?方法是否PerformAction
正在执行Async
?
我找到了一种解决方法,但我只是不明白这种行为......