繁体   English   中英

任务具有计时器经过事件时的任务状态

[英]Task status when task has a timer elapsed event

我正在使用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()
};

每个Task主体仅创建一个计时器,因此当您按返回键时,该Task完成。 计时器不会阻止任务。

任务完成是否有问题? 如果是这样,您能否详细说明原因?

FWIW,任务通常很适合单个未来价值。 如果您希望每X秒发生某件事,请直接创建/使用计时器(无需执行任务),或者考虑使用类似Observable.Interval的方法每隔X秒获取一次持续的值流。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM