我有背景工作者。當它啓動時,它會調用一個方法將數據庫中的記錄發送到另一個webservice。如何停止由Backgroundworker調用的方法?
問題是我做了一個停止按鈕來停止作業發送,但它沒有工作。
我嘗試處理backgroundworker或CancelAsync,但該方法仍在運行(我的應用程序是一個Windows窗體應用程序,所以我知道該方法仍在運行)。任何人都可以爲我提供解決方案嗎?太多了!
我的代碼:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Send();
}
停止按鈕
private void btnStop_Click(object sender, EventArgs e)
{
try
{
backgroundWorker1.CancelAsync();
backgroundWorker1.Dispose();
}
catch (Exception ex)
{
Global._logger.Info(ex.Message + ex.Source);
ShowError(ex.Message);
}
}
注:send()方法將調用另一個方法檢查DB後,發送記錄。
我跑與運行無限循環相同的問題。我最終做的是創建一個volatile標誌,並在我想讓所有線程停止時改變它的值。這導致循環退出並且線程自行退出。 –
@Steve:是的,tks我只是想到了:)我回答了我自己的問題:) –
這是一個非常重複的問題。一個這樣的[Cancel backgroundworker](http://stackoverflow.com/questions/3255459/cancel-backgroundworker)。在發佈之前總是做一個基本的SO搜索 – nawfal