Soy uno de esos programadores accidentales, así que no tengo mucho conocimiento sobre la mejor práctica de programación.C# ¿Debería crear un trabajador de fondo o muchos?
Tengo una aplicación que actualmente usa 4 Background Worker.
Así que los declaran:
private BackgroundWorker bw1;
private BackgroundWorker bw2;
private BackgroundWorker bw3;
private BackgroundWorker bw4;
Entonces configurarlos:
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);
Y luego utilice el bw1.RunWorkerAsync(), bw2.RunWorkerAsync(), y así sucesivamente ...
La cosa es que nunca los llamo simultáneamente, se llaman en un punto diferente de una manera bastante lineal.
Así que mi pregunta es, ¿es mejor tener muchos trabajadores de fondo "preconfigurados" o tener uno y cambiar los eventos DoWork y RunWorkerCompleted de acuerdo con lo que quiero que haga?
Si utiliza varios trabajadores de fondo, debe ponerlos en 'List' para evitar el código redundante. De esta forma, si agrega diez más, no tiene que agregar diez veces la cantidad de código. –