如何从按钮点击事件关闭背景工作者?

时间:2013-03-19 14:20:05

标签: c# multithreading winforms backgroundworker

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

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

我怎样才能做到这一点?

我的代码如下。

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?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以致电BackgroundWorker.CancelAsync()我相信(您似乎已将其评论出来),然后在您的DoWork代码中,您应该继续检查BackgroundWorker1.CancellationPending并提前退出后台主题。