我是新锐的.我创建了一个Windows窗体应用程序.我的申请工作正常.我想在运行时取消BackgroundWorker.我的意思是我想完全停止BackgroundWorker流程.我正在使用此代码取消应用程序,1)我首先使用
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
但它并没有停止.然后我用了
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
bgBackfill1.CancelAsync();
this.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
但是当我退出应用程序时,它会将文件写入G:\ Drive.任何人都可以请我说我怎么能停止在G:\ Drive中写入文件并完全停止BackgroundWorker流程.
谢谢,如果有人帮助我.
Backgroundworkers工人方法必须知道有取消待定,所以只有它才能取消.
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
for (int i = 1; (i <= 10); i++)
{
if ((worker.CancellationPending == true))
{
e.Cancel = true;
break;
}
else
{
// Perform a time consuming operation and report progress.
System.Threading.Thread.Sleep(500);
worker.ReportProgress((i * 10));
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当您设置CancelAsync时,您可以设置Cancellation pending.但是您还需要为该属性注意DoWork方法 - 尽快取消工作.请参阅MSDN上的示例.
| 归档时间: |
|
| 查看次数: |
10521 次 |
| 最近记录: |