С# - Application.Run()

Я только начинаю разработку .Net(С#) и сталкиваюсь с каким-то кодом, который меня слегка смущает....

Если у меня

Form myForm = new Form();

Что делает следующая строка:

Application.Run(myForm);

Делает ли он по существу то же самое, что и myForm.ShowDialog() или myForm.Show() (что то, что я думал, при запуске формы будет делать).....

Я всегда нахожу, что msdn - плохой ресурс для правильного объяснения материала новым посетителям.

Ответ 1

Application.Run(myForm); делает эту форму видимой для пользователя. Это первая форма, которая загружается в память. И он запускает эту форму в цикле сообщений, так что вы получаете все пользовательские события.

Короткий ответ:

Application.Run начинает запускать стандартный цикл сообщений приложения в текущем потоке.

Длинный ответ:

Application.Run заставляет приложение Windows вводить цикл сообщений в Winmain для обработки различных сообщений Windows сообщениями ОС в очередь сообщений. Цикл сообщения "Петли" до тех пор, пока он не получит сообщение WM_QUIT. Он использует GetMessage и PeekMessage для извлечения сообщений и PostMessage для отправки восстановленных сообщений в процедуру Windows.

Если вы делаете

Form myForm = new Form(); 
myForm.Show();

он отобразит форму и выйдет. Вы будете использовать new Form() и .Show(), если хотите запустить новую форму из существующей формы.

Надеюсь, это ответит на ваш вопрос.

Ответ 2

чтобы запустить приложение с основной формой, чтобы приложение прекратилось, когда основная форма закрыта. он будет связан с текущей нитью. он запускает эту форму в цикле сообщений.

Message Loop означает: они воздействуют на сообщения, которые операционная система отправляет в основной поток приложения. Эти сообщения принимаются из очереди сообщений приложением, повторно вызывая функцию GetMessage (PeekMessage) в разделе кода, называемом циклом событий . "

Запуск приложения()