我有一個BackgroundWorker在後臺執行工作。該工作是在命令提示符下運行一些.exe應用程序並等待輸出顯示。有時.exe應用程序堆棧或需要很長時間。如果它仍在運行,我想在一分鐘後停止工人。 問題是我有一個進度條,在主線程中運行1分鐘。當進度條已滿(1分鐘後)來自主線程(UI)時,我想停止該工作人員。這裏是我的代碼:WPF從主線程停止BackgroundWorker
private void btnTest_Click(object sender, RoutedEventArgs e)
{
wTest = new BackgroundWorker();
wTest .DoWork += new DoWorkEventHandler(wTest _DoWork);
wTest .RunWorkerCompleted += wTest _RunWorkerCompleted;
wTest .WorkerReportsProgress = true;
wTest .WorkerSupportsCancellation = true;
wTest .RunWorkerAsync();
while (pbTest.Value < 91)
{
if (!wTest.CancellationPending)
{
pbTest.Value = (pbTest.Value + 100/60);
Thread.Sleep(1000);
}
Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Background,
new ThreadStart(delegate { }));
}
}
void wTest_DoWork(object sender, DoWorkEventArgs e)
{
//call .exe application and wait for output
}
我該怎麼辦?
停止後臺工作或停止它啓動的過程? –
我想阻止工人。我可以認爲它會阻止這個過程呢? – user3719173