我無法取消其中包含Thread.Sleep(100)
的後臺工作人員。如何取消睡眠後臺工作人員?
private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
int count;
try
{
count = int.Parse(textBox3.Text);
for (int i = 0; i < count; i++)
{
backgroundWorker1.ReportProgress((int)(((double)(i + 1)/count) * 1000));
//Computation code
Thread.Sleep(int.Parse(textBox4.Text));
}
}
catch (Exception ex)
{
request.DownloadData(url);
MessageBox.Show(ex.Message);
}
}
private void cancel_Click(object sender, EventArgs e)
{
backgroundWorker1.CancelAsync();
progressBar1.Value = 0;
}
如果我刪除Thread.Sleep(100)
,則取消的作品,但否則它只是不斷去(進度條不停止)。
編輯:添加代碼
你可以發佈循環的其餘部分嗎?它是否在每次迭代時檢查一些標誌?減少睡眠時間,對1說解決問題?睡眠(100)在處理循環中的 – Joey
? – Reniuz
不完整的代碼。只有睡眠(100)電話只能_delay_取消一點點。必須有別的東西。 –