2015-12-04 2 views
0

У меня есть большое приложение с явным вызовом Application.Exit() после диалога подтверждения. Однако, если я отлаживаю это приложение и я ухожу, приложение не закрывается. Visual Studio все еще говорит «Бег». Все окна закрыты.Приложение не завершает

Есть ли способ узнать, какая часть приложения все еще работает или что-то блокирует? Я попробовал «Break All», но он не дал мне никакой полезной информации. Кроме того, у меня есть только один процесс и нет потоков.

+0

http://stackoverflow.com/questions/1057151/application-exit –

+0

Вы пытались использовать IntelliTrace и смотрели на стек вызовов? –

+0

У вас могут быть потоки, которые все еще запущены. Попробуйте использовать 'Environment.FailFast' или' Environment.Exit'. Я бы посоветовал устранить проблему, но посмотри на окно Threads, когда вы выйдете, посмотрите, какие из них все еще запущены. Вы должны уметь останавливать их и видеть больше подробностей о том, что они делают. –

ответ

1

Я нашел проблему, это было закрытое соединение с базой данных. Я добавил SyncNotification=true в строку подключения, и, видимо, это также означает, что соединение должно быть явно закрыто.

Итак, для будущих посетителей: как упомянули другие люди: проверьте потоки, а также любые соединения или другие, возможно, блокирующие объекты.

0

В соответствии с documentation Application.Exit информирует все насосы сообщений, которые они должны завершить, а затем закрывает все окна приложений после обработки сообщений. Какой-либо код все еще работает в потоке пользовательского интерфейса?

+0

Я знаю. Возникает вопрос: как узнать, что это может вызвать? –

+0

@BartFriederichs: Нажмите «Пауза» в VS, и отладчик разбивается на то, что в данный момент запущено. – Joey

+0

@ Джой, да, и это была только моя основная тема. Я нашел проблему. Это было закрытое соединение с базой данных. –

Смежные вопросы