Немодальная форма статуса - PullRequest
1 голос
/ 31 мая 2010

В начале раздела кода C #, который может занять несколько секунд, я хотел бы отобразить немодальную форму с надписью, которая просто говорит: «Пожалуйста, подождите ...»

WaitForm myWaitForm = null;

try
{
  // if conditions suggest process will take awhile
  myWaitForm = new WaitForm();
  myWaitForm.Show();

  // do stuff
}
finally
{
  if (myWaitForm != null)
  {
    myWaitForm.Hide();
    myWaitForm.Dispose();
    myWaitForm = null;
  }
}

Проблема: WaitForm не отображается полностью, пока остальная часть кода не свяжет поток. Так что я вижу только рамку формы. В Delphi (мое старое топание) я бы вызвал Application.ProcessMessages после Show (). Есть ли эквивалент в C #? Есть ли постоянная форма статуса, которую я могу использовать в подобных ситуациях? Есть ли лучший способ приблизиться к этому?

Спасибо заранее. Дэвид Дженнингс

Ответы [ 4 ]

5 голосов
/ 31 мая 2010

Вам нужно запустить часть do stuff в другом потоке.
а потом все myWaitForm.Show()
Взгляните на BackgroundWorker класс здесь

1 голос
/ 31 мая 2010

Я согласен с предложением «другая нить», но для простых и кратких целей подойдет Application.DoEvents ().

1 голос
/ 31 мая 2010

Вам лучше перенести код "делать вещи" в другой поток. и использовать Application.DoEvents () для обработки сообщений формы

0 голосов
/ 31 мая 2010

Вы ищете термин "заставка".

Вот несколько связанных комментариев. https://stackoverflow.com/search?q=splash+screen+c%23

...