如何在跑步时停止背景工作

G A*_*iya 3 c#

我是新锐的.我创建了一个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流程.

谢谢,如果有人帮助我.

Vik*_*iaR 5

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上的示例.