2013-05-13 2 views
1

Я использую фонаря для отображения экрана загрузки.Правильный способ использования Backgroundworker

DO, мероприятие выглядит следующим образом:

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 для этого? Это правильный способ использовать Фоноверто?

ответ

4

Я чувствую, что вы делаете это немного назад. Фоновертор должен выполнять работу, пока ваш основной процесс отображает текущую форму и, возможно, ее обновляет. Когда работник фонового рисунка закончил загрузку ваших данных, он должен обработать его в основном потоке в событии backgroundworker «RunWorkerCompleted».

Это также упростит ваш код, так как вам не нужны ваши вызовы перед закрытием или скрытием формы.

Я надеюсь, что это ответили на ваш вопрос. // Flipbed

Смежные вопросы