0

我编写了一个 C# 程序来通过 backgndWorkerEnroll_DoWork 调用一个函数。它将从一个 for 显示的事件开始。

另一方面,我有一个按钮单击事件。当该事件发生时,我调用一个函数并返回成功,我想关闭后台工作程序。

我怎样才能做到这一点?

我的代码如下。

private void PwdCheck_Shown(object sender, EventArgs e)
{
    backgroundWorker1.RunWorkerAsync();
}

private void btnEnter_Click(object sender, EventArgs e)
{ 
    resPwdValid = PwdValid();
    if (resPwdValid == true)
    {
         //backgroundWorker1.CancelAsync();
         this.Close();
    }
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{               
    tstVerify:
        resVerify = testVerfy();
        if (resVerify == true)
        {
           // MessageBox.Show("Matched");
        }
        else
        {
           MessageBox.Show("Not Matched");
           goto tstVerify;
        }
}

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    if (resVerify == true)
    {
        this.Close();
    }
}

在我的 btnenter_click respwdvalid 返回 true 后,如何关闭 backgroundrunner?

4

2 回答 2

0

使用Cancellation 属性

于 2013-03-19T14:26:01.077 回答
0

你会打电话给BackgroundWorker.CancelAsync()我相信(你似乎已经把它注释掉了)然后在你的DoWork代码中你应该继续检查BackgroundWorker1.CancellationPending并尽早退出你的后台线程。

于 2013-03-19T14:26:47.697 回答