2013-03-19 2 views
0

backgndWorkerEnroll_DoWork를 통해 함수를 호출하는 C# 프로그램을 작성했습니다. 표시된 이벤트부터 시작합니다.버튼 클릭 이벤트에서 backgroundworker를 닫는 방법?

반대쪽에는 버튼 클릭 이벤트가 있습니다. 그 이벤트가 발생하면 함수를 호출하고 성공을 반환하며 backgroundworker를 닫고 싶습니다.

어떻게하면됩니까?

아래 코드를 참조하십시오.

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를 반환 한 후에 백그라운드 러너를 닫을 수 있습니까? 당신은 내가 생각 BackgroundWorker.CancelAsync()이 호출하게 될 Cancellation Property

+0

여기에서 예제를 확인하십시오 http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx 정확히 무엇을 필요로하는지 나타냅니다 –

+1

@ 시바 - 질문의 형식을 올바르게 지정하십시오! ! –

답변

0

만들기 사용은 다음 DoWork 코드에서 당신이 BackgroundWorker1.CancellationPending을 계속 확인해야하며, 조기에 백그라운드 스레드를 종료 (당신이 그것을 주석 것 같다).

관련 문제