Je travaille sur un projet qui crée 20 à 50 nouvelles tâches toutes les 30 à 80 secondes. Chaque tâche dure de 10 à 20 secondes.Redémarrer une tâche ou en créer une nouvelle?
Je suis sur un Timer pour créer ces nouvelles tâches, mais chaque fois que je recréer toujours la même tâche, le code est comme ceci:
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();
}
}
Ma question est, theres un moyen de créer une tâche et en gardant le redémarrer, donc je n'ai pas besoin de commencer une nouvelle tâche Task.Factory.StartNew (service.Execute); à chaque fois?
Ou c'est quelque chose que je n'ai pas à s'inquiéter, et c'est bon de continuer à créer de nouvelles tâches?
Y a-t-il un guide/de bonnes pratiques sur la façon dont je devrais travailler sur ce scénario, avec ce genre de threads?
Vous utilisez _Tasks_, pas _Threads_. fait toute la différence ici. –
'Task.Factory.StartNew' ne" démarre pas un nouveau thread "(généralement) –
Ok, j'ai compris. La question devient "Devrais-je créer une nouvelle tâche à chaque fois, ou puis-je la redémarrer?" –