0

backgndWorkerEnroll_DoWork を介して関数を呼び出す C# プログラムを作成しました。表示されているイベントから開始されます。

反対側には、ボタンクリックイベントがあります。そのイベントが発生したときに関数を呼び出すと、成功が返されます。バックグラウンド ワーカーを閉じたいと思います。

どうすればこれを達成できますか?

以下の私のコード。

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

キャンセルプロパティを利用する

于 2013-03-19T14:26:01.077 に答える
0

あなたは私が信じていると呼ぶでしょうBackgroundWorker.CancelAsync()(あなたはそれをコメントアウトしたようです)そしてあなたのDoWorkコードであなたはチェックを続けBackgroundWorker1.CancellationPendingそしてあなたのバックグラウンドスレッドを早く終了するべきです。

于 2013-03-19T14:26:47.697 に答える