【发布时间】:2010-09-12 20:50:47
【问题描述】:
我正在开发一个每 30~80 秒创建 20~50 个新任务的项目。 每个任务的生存时间为 10~20 秒。
所以我使用Timer 来创建这些新任务,但每次我总是重新创建相同的任务,代码是这样的:
public class TaskRunner : IDisposable
{
private readonly Timer timer;
public IService service;
public ThreadRunner(IService service) {
this.service = service;
timer = new Timer(10000);
timer.Elapsed += Execute;
timer.Enabled = true;
}
}
private void Execute(object sender, ElapsedEventArgs e)
{
try
{
Task.Factory.StartNew(service.Execute);
}
catch (Exception ex)
{
logger.ErrorFormat("Erro running thread {0}. {1}", service, ex);
}
}
public void Dispose()
{
timer.Dispose();
}
}
我的问题是,有什么方法可以创建一个任务并不断重启它,所以我不需要每次都启动一个新任务Task.Factory.StartNew(service.Execute);? p>
或者那是我不必担心的事情,并且可以继续创建新任务?
关于我应该如何使用这种线程处理这种情况,有任何指南/最佳实践吗?
【问题讨论】:
-
您使用的是Tasks,而不是Threads。在这里与众不同。
-
Task.Factory.StartNew不会“启动新线程”(通常) -
好的,我知道了。问题变为“我应该每次都创建一个新任务,还是可以重新启动它?”
标签: c# multithreading c#-4.0 task-parallel-library