2012-02-17 5 views
0

메인 폼의 닫기 이벤트 처리기에서 해당 스레드가 끝나기를 기다렸지 만 UI 스레드가 차단되었으므로 더 좋은 해결책이 있습니까?UI 스레드를 차단하지 않고 multithread winform C# 응용 프로그램을 종료

public partial class Form1 : Form 
{ 
    private Thread _worker; 
    private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     _worker.Join(); 

    } 

내가 완료하기 위해 작업자 스레드를 기다리는 진행 양식을 표시하는 희망이 어떻게 할 수있는 :

이 코드 조각인가?

+0

우리는 당신이 의미하는 코드 예를 필요로 할 것입니다. –

+0

응용 프로그램이 다른 사람들을 어떻게 기다릴 수 있습니까? 귀하의 코드를 공유하십시오. –

+0

@ChrisShain 코드 추가 – Benny

답변

0

_worker 스레드를 현재 스레드 (UI 스레드)에 가입시킵니다. 이것은 UI가 매달린 이유입니다.

신청서를 마감하기 전에 _worker 완료하려면 다음 제안 사항을 제안합니다.

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
     // Check worker thread complete or not 
     if (_worker.ThreadState != ThreadState.Stopped) 
     { 
      e.Cancel = true; 
      MessageBox.Show("Not complete, please wait"); 
     } 
} 

이 방법이 유용 할 것입니다.

+0

스레드가 완료 될 때까지 기다리는 진행 상태를 표시하려면 어떻게해야합니까? – Benny

관련 문제