0
我最近重寫了Windows窗體應用程序以使用BackgroundWorker實例,而不是使用手動創建的「工作線程」。簽入後,我注意到一些測試開始失敗。而Test_B失敗System.ComponentModel.BackgroundWorker永遠不會調用ProgressChanged
[Test]
public void Test_A()
{
bool progressChanged = false;
var worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.DoWork += (s, e) => worker.ReportProgress(0, null);
worker.ProgressChanged += (s, e) => progressChanged = true;
worker.RunWorkerAsync();
Thread.Sleep(100);
progressChanged.ShouldBeTrue();
}
[Test]
public void Test_B()
{
//Creation of o form component causes (?) this test to fail, even do I dispose it
var view = new Form();
view.Dispose();
bool progressChanged = false;
var worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.DoWork += (s, e) => worker.ReportProgress(0, null);
worker.ProgressChanged += (s, e) => progressChanged = true;
worker.RunWorkerAsync();
Thread.Sleep(100);
progressChanged.ShouldBeTrue();
}
Test_A成功:一些調試後,我可以向您展示以下2個測試demonstate我的問題。無論我睡了100毫秒還是100分鐘,這都是無關的。爲什麼??我的生產代碼似乎工作,但它是令人討厭的不能夠有一個迴歸測試套件的工作(我有其他測試創建窗體組件,這些測試必須執行之前,我的測試使用BackgroundWorker) 下一步將是檢查BackgroundWorker的源代碼,但在我這樣做之前,我想我會在這裏尋求幫助。
問候邁克爾
非常感謝,立即工作! – Michael 2010-12-02 08:37:25