У меня есть форма, которая является очень медленной, потому что существует много средств управления, помещенных в форму.
В результате форма занимает много времени к загруженному.
Как я загружаю форму сначала, затем отображаю ее и в то время как загрузка задержки показывает другую форму, которая это имеет сообщение как "Загрузка..., ожидайте.?"
Использование отдельного потока для отображения простого сообщения «пожалуйста, подождите» - это излишнее, особенно если у вас нет большого опыта работы с потоками.
Гораздо более простой подход - создать сообщение «Пожалуйста, подождите» форма и отображать ее как окно без режима непосредственно перед формой медленной загрузки. После завершения загрузки основной формы скройте форму, пожалуйста, подождите.
Таким образом, вы используете только один основной поток пользовательского интерфейса, чтобы сначала отобразить форму, подождите, а затем загрузить свою основную форму.
Единственным ограничением этого подхода является то, что ваша форма «Пожалуйста, подождите» не может быть анимирована (например, анимированный GIF), потому что поток занят загрузкой вашей основной формы.
PleaseWaitForm pleaseWait=new PleaseWaitForm ();
// Display form modelessly
pleaseWait.Show();
// ALlow main UI thread to properly display please wait form.
Application.DoEvents();
// Show or load the main form.
mainForm.ShowDialog();
Вы хотите заглянуть в экраны «Заставка».
Отобразите еще одну форму «Заставка» и дождитесь завершения обработки.
Вот быстрый и грязный пост о том, как это сделать.
Вот лучший пример .
A simple solution:
using (Form2 f2 = new Form2())
{
f2.Show();
f2.Update();
System.Threading.Thread.Sleep(2500);
} // f2 is closed and disposed here
And then substitute your Loading for the Sleep.
This blocks the UI thread, on purpose.
Вы должны создать фоновый поток для создания и заполнения формы. Это позволит вашему потоку переднего плана отображать сообщение о загрузке.
You can take a look at my splash screen implementation: C# winforms startup (Splash) form not hiding