我有一個後臺工作人員的應用程序。在doWork方法中,我做了一個html web請求。如果這個請求失敗(例如錯誤404),我想在線程結束之前退出。因此,在我抓我加入這個代碼後臺工作人員不停止
worker.CancelAsync();
if (worker.CancellationPending)
{
e.Cancel = true;
}
的問題是,該線程不會阻止,但它會創建一個新的HTML Web請求。
一些代碼:
try
{
var request = (HttpWebRequest)WebRequest.Create(url1);
request.Timeout = 5000;
request.UserAgent = @"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5";
var document = new HtmlAgilityPack.HtmlDocument();
try
{
using (var responseStream = request.GetResponse().GetResponseStream())
{
document.Load(responseStream, Encoding.UTF8);
//some lines of code to parse html
}
catch (WebException we){
worker.CancelAsync();
if (worker.CancellationPending)
{
e.Cancel = true;
return;
}
}
catch (Exception) { }
這是我做的工作方法......
你不需要worker.CancelAsync ()和if(worker.CancellationPending部分,你可以離開你的BackgroundWorker沒有它 – Casperah