Sto lavorando a un progetto che crea 20 ~ 50 nuovi compiti ogni 30 ~ 80 secondi. Ogni attività dura 10 ~ 20 secondi.Riavvia un'attività o creane una nuova?
Così sto usando un Timer per creare questi nuovi compiti, ma ogni volta sempre di ricreare la stessa operazione, il codice è simile a questo:
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();
}
}
La mia domanda è, c'è un modo per creare un'attività e continuando a riavviarlo, quindi non ho bisogno di iniziare una nuova attività Task.Factory.StartNew (service.Execute); ogni volta?
O questo è qualcosa che non devo preoccuparmi, e va bene continuare a creare nuovi compiti?
C'è qualche guida/best practice su come devo lavorare su questo scenario, con quel tipo di thread?
Stai utilizzando _Tasks_, non _Threads_. fa la differenza qui. –
'Task.Factory.StartNew' non" avvia un nuovo thread "(in genere) –
Ok, ho capito. La domanda cambia in "dovrei creare una nuova attività ogni volta o posso semplicemente riavviarla?" –