Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Application.Run(), Для чего эта функция? 
:(
    Опции темы
amarenkov
Дата 3.6.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Доброе сутко.

Что именно делает Application.Run()? Почему что так:
Код

Application.Run(new Forms.frmBakery());

что так:
Код

Forms.frmBakery frm = new Forms.frmBakery();
if (frm.ShowDialog() == DialogResult.OK)
   ...

работает вроде бы одинаково. 

В чем различие? В чем особенность Application.Run()?

Заранее спасибо smile.
PM MAIL ICQ   Вверх
Maka6er
Дата 3.6.2008, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 27.2.2007
Где: Киев

Репутация: нет
Всего: 3



Application.Run() запускает цикл обработки сообщений для потока - программу. При передачи параметром формы еще и показывает её.
msdn
PM MAIL   Вверх
amarenkov
Дата 3.6.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Maka6er, спасибо, конечно. Может я неправильно сформулировал вопрос... smile Я читал все, что было в MSDN про эту функцию. Я не понимаю, почему и без нее, просто делая From.ShowDialog() получаем ту же самую функциональность.

Если следовать логике MSDN, если мы не вызываем эту функцию, то события обрабатываться не должны. Но они обрабатываются. Формой. Так для чего же функция Run()?
PM MAIL ICQ   Вверх
Maka6er
Дата 3.6.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 27.2.2007
Где: Киев

Репутация: нет
Всего: 3



Значит From.ShowDialog() тоже запускает поток обработки сообщений.
PM MAIL   Вверх
amarenkov
Дата 3.6.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Похоже на то. Но, изначально там стоит:
Код
    
Application.Run(new Forms.MainForm());

а не
Код

(new Forms.MainForm()).ShowDialog()


Значит, Application.Run() не просто запускает обработку сообщений, а служит для чего-то еще.
PM MAIL ICQ   Вверх
Maka6er
Дата 3.6.2008, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 27.2.2007
Где: Киев

Репутация: нет
Всего: 3



Ну да, если передать форму в Application.Run() то она её покажет. В Application.Run(new Forms.MainForm()) так и делается, создается форма и передается в Application.Run(), вызывать .ShowDialog() уже нет необходимости.
PM MAIL   Вверх
amarenkov
Дата 3.6.2008, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Хорошо, спрошу совсем по-другому: почему не используется (new Forms.MainForm()).ShowDialog() вместо Application.Run(new Forms.MainForm()); ?
PM MAIL ICQ   Вверх
vponomarov
Дата 3.6.2008, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 5
Всего: 12



читайте внимательнее smile 
Цитата

This method adds an event handler to the mainForm parameter for the Closed event. The event handler calls ExitThread to clean up the application.



--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
amarenkov
Дата 4.6.2008, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



vponomarov, а когда я не использую метод Run() что-то не очищается разве? Вообще что-то непонятное: ведь после завершения работы главной формы управление передается за метод Run(), на следующий оператор, если он есть. О каком ExitThread может идти речь?

Я к чему тут всех мучаю smile: я в одном приложении использую (new Forms.MainForm()).ShowDialog()  вместо  Application.Run(). И мне неспокойно от подозрения, что из-за этого может появиться какой-то баг.
PM MAIL ICQ   Вверх
vponomarov
Дата 4.6.2008, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 5
Всего: 12



amarenkov, на самом деле .Net скрывает от программиста много вещей.
например, цикл обработки сообщений.
помимо цикла сообщений для форм есть еще сообщения для всей программы
в частности, о чем и говорится в МСДНе - сообщение о завершении приложения.
если не создать обработчик для этого сообщения думаю ничего хорошего быть не должно smile 
сорри, если путанно или ошибаюсь в терминах, но думаю суть понятна smile 


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
amarenkov
Дата 4.6.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



vponomarov, будем надеятся, что особенность только в сообщениях для приложения smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0511 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.