Sono uno di quei programmatori casuali, quindi non ho tanta conoscenza sulla programmazione delle migliori pratiche.C# dovrei creare un lavoratore in background o molti?
Ho un'applicazione che attualmente utilizza 4 Background Worker.
Quindi io li dichiarano:
private BackgroundWorker bw1;
private BackgroundWorker bw2;
private BackgroundWorker bw3;
private BackgroundWorker bw4;
Poi configurarli:
bw1 = new BackgroundWorker();
bw1.WorkerReportsProgress = true;
bw1.DoWork += new DoWorkEventHandler(bw1_DoWork);
bw1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw1_RunWorkerCompleted);
bw1.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw2 = new BackgroundWorker();
bw2.WorkerReportsProgress = true;
bw2.DoWork += new DoWorkEventHandler(bw2_DoWork);
bw2.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw2_RunWorkerCompleted);
bw2.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw3 = new BackgroundWorker();
bw3.WorkerReportsProgress = true;
bw3.DoWork += new DoWorkEventHandler(bw3_DoWork);
bw3.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw3_RunWorkerCompleted);
bw3.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw4 = new BackgroundWorker();
bw4.WorkerReportsProgress = true;
bw4.DoWork += new DoWorkEventHandler(bw4_DoWork);
bw4.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw4_RunWorkerCompleted);
bw4.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
E allora io uso il bw1.RunWorkerAsync(), bw2.RunWorkerAsync(), e così via ...
La cosa è che non li chiamo mai contemporaneamente, sono chiamati in punti diversi in modo piuttosto lineare.
Quindi la mia domanda è: è meglio avere molti utenti in background "pre-configurati" o averne uno e modificare gli eventi DoWork ed RunWorkerCompleted in base a ciò che voglio che faccia?
Se si utilizzano più operatori in background, è necessario inserirli in un 'Elenco' per impedire il codice ridondante. In questo modo, se ne aggiungi altri dieci, non devi aggiungere dieci volte la quantità di codice. –