gpt4 book ai didi

c# - 重启任务还是创建新任务?

转载 作者:可可西里 更新时间:2023-11-01 08:41:41 26 4
gpt4 key购买 nike

我正在做一个项目,每 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>

或者那是我不必担心的事情,可以继续创建新任务吗?

有关于我应该如何使用那种线程在这种情况下工作的任何指南/最佳实践吗?

最佳答案

您的 Execute 方法已经在线程上运行。由您正在使用的 System.Timers.Timer 启动的线程池线程,用于引发 Elapsed 事件。不要启动另一个线程,只需使用交给您的线程即可。 Threadpool 线程非常便宜并且会自动回收。

关于c# - 重启任务还是创建新任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3696568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com