這就是我在我的代碼做的: 在BackgroundWorker的DoWork的事件中,我所做的:如何暫停和恢復BackgroundWorker?
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
_busy.WaitOne();
this.Invoke(new MethodInvoker(delegate { label2.Text = "Website To Crawl: "; }));
this.Invoke(new MethodInvoker(delegate { label4.Text = mainUrl; }));
webCrawler(mainUrl, levelsToCrawl, e);
}
然後在暫停按鈕單擊事件我所做的:
private void button4_Click(object sender, EventArgs e)
{
_busy.Reset();
}
在恢復按鈕點擊事件我所做的:
private void button5_Click(object sender, EventArgs e)
{
_busy.Set();
}
但是當我點擊來啓動進程它不工作:
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
button1.Enabled = false;
this.Text = "Processing...";
label6.Text = "Processing...";
label6.Visible = true;
button2.Enabled = false;
checkBox1.Enabled = false;
checkBox2.Enabled = false;
numericUpDown1.Enabled = false;
button3.Enabled = true;
}
什麼都沒有發生,只有當我點擊恢復按鈕的過程開始,然後當我點擊暫停按鈕什麼都沒有發生。
我希望當我點擊啓動過程按鈕時,它會定期啓動背景工作,然後單擊暫停按鈕時它將暫停,恢復按鈕將恢復。
我做錯了什麼?有人可以修復我的代碼?
打開的問題編輯... aaaand放棄:) – Reniuz
只需修改工人可以訪問的布爾值?我會在backgroundWorker中放棄這一點,而不是暫停線程本身。 – Aphelion
Aphelion請給我一個例子謝謝。 –