我是那些偶然的程序員之一,所以我沒有太多關於編程最佳實踐的知識。C#應該創建一個或多個後臺工作者嗎?
我有一個應用程序,當前使用4後臺工作。
所以我宣佈他們:
private BackgroundWorker bw1;
private BackgroundWorker bw2;
private BackgroundWorker bw3;
private BackgroundWorker bw4;
將它們配置:
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);
然後我用bw1.RunWorkerAsync(),bw2.RunWorkerAsync(),等等...
事情是我從來沒有同時打電話給他們,他們在不同的地方以非常線性的方式打電話。
所以我的問題是,有更多的「預先配置」的後臺工作人員,或根據我想要做的更改DoWork和RunWorkerCompleted事件嗎?
如果你確實使用了多個後臺工作者,你應該把它們放在'List'中以防止冗餘代碼。這樣,如果再添加十個,則不必添加十倍的代碼量。 –