В чем разница между этими тремя кодами?
1.
Window a = new Window ();
a.Show (); // call show
Application b = new Application ();
b.Run (); // call without a
2.
Window a = new Window ();
// do not call show
Application b = new Application ();
b.Run (a); // with a
Зачем работать правильно? И зачем это работает? 3.
Window a = new Window ();
a.Show (); // call show and also call show bellow
Application b = new Application ();
b.Run (a); // with a
оба они в основном предназначены для цикла сообщений, это ядро приложения Windows, которое обрабатывает оконное сообщение, такое как рисование, событие mouse/kbd и т.д.
если вы используете код ниже без Application.Run
Window a = new Window ();
a.Show ();
вы найдете замороженное окно, причина в том, что некому рассказать об этом окне, чтобы перерисовать или обработать любое событие.
поэтому, вызывая цикл сообщений через Application.Run
, окно начинает работать как ожидалось
Application b = new Application ();
b.Run (a); // with a