Application.Run () приводит к зависанию приложения - PullRequest
0 голосов
/ 21 декабря 2010

Когда я запускаю приложение без конкретной формы, например

Application.Run();

А потом я создаю форму, после того как пользователь закрывает ее, процесс просто зависает.

Это происходит вне Visual Studio.

Я пытался поместить Application.Exit() и / или Application.ExitThread() в событие Form_Closing формы, но оно все еще зависает.

Редактировать: Использование пользовательского ApplicationContext, к сожалению, не работает.

К вашему сведению, я не использую ни темы, ни BackgroundWorkers.

Ответы [ 3 ]

2 голосов
/ 22 декабря 2010

Используйте Инструменты + Присоединить к процессу, чтобы прикрепить отладчик к зависшему процессу. Debug + Break All. Отладка + Windows + Threads, дважды щелкните по основному потоку и посмотрите на его стек вызовов, чтобы увидеть, что он делает. Опубликуйте трассировку стека в своем вопросе, если это не поможет.

1 голос
/ 22 декабря 2010

Из MSDN для без параметров Application.Run ():

Большинству разработчиков Windows Forms не нужно будет использовать эту версию метода.Вы должны использовать перегрузку Run (Form), чтобы запустить приложение с основной формой, чтобы приложение закрывалось при закрытии основной формы.Во всех других ситуациях используйте перегрузку Run (ApplicationContext), которая поддерживает предоставление объекта ApplicationContext для лучшего контроля над временем жизни приложения.

Итак, короткий ответ, попробуйте указать объект ApplicationContext, илипросто запустите () форму, которую вы создаете и показывает.Может быть, поможет более конкретный пример того, почему вы пытаетесь открыть цикл сообщений, не привязывая его к форме.Вы открываете несколько форм?Это вводная форма, например заставка или логин?

0 голосов
/ 22 декабря 2010

Попробуйте вместо этого использовать перегрузку Application.Run(new MyForm()), хотя Application.Exit () должен работать для вас, как описано здесь .

...