2013-05-13 5 views
1

loadingscreen을 표시하기 위해 backgroundworker를 사용하고 있습니다.Backgroundworker를 사용하는 올바른 방법

private void bwLoadingScreen_DoWork(object sender, DoWorkEventArgs e) 
{ 
      _ls = new LoadingScreen(); 
      _ls.Show(); 
      while (!bwLoadingScreen.CancellationPending) 
      { 
       Application.DoEvents(); 
      } 
} 

나는 Loadingscreen를 폐기하려면 다음 코드를 사용합니다 :

if (_ls.InvokeRequired && !_ls.IsDisposed) 
      { 
       Invoke(new MethodInvoker(delegate 
        { 
         _ls.Close(); 
         _ls.Dispose(); 
        })); 
      } 
      else if (!_ls.IsDisposed) 
      { 
       _ls.Hide(); 
       _ls.Dispose(); 
      } 

내가이의 RunWorkerCompleted 이벤트를 사용해야

할 일 이벤트는 다음과 같습니다? 이것이 바로 Backgroundworker를 사용하는 올바른 방법입니까?

답변

4

나는 당신이 약간 뒤로하고있는 것처럼 느낍니다. 기본 프로세스가 현재 양식을 표시하고 가능하면 업데이트하는 동안 Backgroundworker는 작업을 수행해야합니다. backgroundworker가 데이터로드를 완료하면 backgroundworker 이벤트 'RunWorkerCompleted'의 주 스레드에서 처리해야합니다.

이렇게하면 양식을 닫거나 숨기기 전에 호출 할 필요가 없으므로 코드가 간단 해집니다.

이 질문에 대한 답변을 바랍니다. // Flipbed

관련 문제