Voglio che un lavoratore in background continui a funzionare e occasionalmente aggiorni l'interfaccia utente. La mia prima idea era usare un BackgroundWorker e nel suo evento completato è sufficiente accenderlo di nuovo.
L'utilizzo di un BackgroundWorker è accettabile in questo modo? o ci sono potenziali problemi nell'utilizzo dell'evento completato per attivare il lavoratore?
Di seguito c'è qualche pseudo codice di quali sono le mie intenzioni
class Program
{
private static BackgroundWorker worker;
private static Int32 runs = 0;
static void Main(string[] args)
{
worker = new BackgroundWorker();
worker.DoWork += worker_DoWork;
worker.RunWorkerCompleted += worker_RunWorkerCompleted;
worker.RunWorkerAsync(runs);
Console.ReadLine();
}
static void worker_DoWork(object sender, DoWorkEventArgs e)
{
//Do time consuming work
Thread.Sleep(3000);
}
static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//Update the UI and start time consuming work again
runs++;
Console.WriteLine("Completed run #" + runs);
worker.RunWorkerAsync();
}
}