Я работаю над проектом, который создает 20 ~ 50 новых задач каждые 30 ~ 80 секунд. Каждая задача выполняется в течение 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();
}
}
Мой вопрос, Theres ли способ создать задачу и перезапускать его, поэтому мне не нужно начинать новую задачу. Task.Factory.StartNew (service.Execute); каждый раз?
Или это то, о чем мне не о чем беспокоиться, и нормально продолжать создавать новые задачи?
Есть ли какое-либо руководство или рекомендации по работе с этим сценарием, с такими потоками?
Вы используете _Tasks_, а не _Threads_. здесь все имеет значение. –
'Task.Factory.StartNew' не запускает новый поток (обычно) –
Хорошо, я понял. Вопрос меняется на «должен ли я создавать новую задачу каждый раз, или я могу просто перезапустить ее?» –