我正在使用 TPL 创建并行任务。每个任务都有计时器经过事件,因此每 2 秒它调用另一个方法。这将持续很长时间。但是,当调用计时器事件时的状态时,任务状态为“RanToCompletion”。当任务每隔几秒钟调用一次事件计时器时,任务怎么会是这种状态?示例代码如下。
Task<int>[] tasks = new Task<int>[n];
for (int i = 0; i < 20; i++)
{
tasks[i] = Task<int>.Factory.StartNew(() =>
{
Work work = new Work();
work.doWork();
return 1;
}
);
}
public void doWork()
{
System.Timers.Timer aTimer = new System.Timers.Timer(1000);
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Start()
};