Консольное приложение C # все еще находится в памяти после выхода - PullRequest
2 голосов
/ 16 октября 2008

У меня есть консольное приложение .net C # (не служба). он в основном подключается к веб-сервису, получает несколько XML-файлов, копирует эти файлы в несколько мест на диске, проверяет XML, обрабатывает его и отправляет эти объекты в другой веб-сервис.

Однако, когда основной метод существует (и окно консоли закрывается), я все равно вижу процесс в диспетчере задач.

Я попытался окружить все в основном методе попыткой перехватить исключение ApplicationException, но у меня все еще не получалось понять, почему приложение вылетает, хотя все работает иначе ...

Кто-нибудь знает, с чего начать проверку неисправной детали?

Ответы [ 5 ]

4 голосов
/ 16 октября 2008

Посмотрите на использование потоков и асинхронные вызовы.

2 голосов
/ 16 октября 2008

Если вы отлаживаете приложение, то я видел ситуацию, когда Visual Studio создает исполняемый файл с именем, похожим на ваше приложение, с файлом .vshost.exe в конце. Он использует этот контроль вашего приложения для лучшего отладки. Этот exe хоста остается после того, как вы закончили отладку своей программы, так что она ждет и готова, чтобы он мог быстро начать новый сеанс отладки.

Вы уверены, что это не этот exe, который торчит?

Если вы запустили ваше приложение без отладки, оно все еще зависает?

2 голосов
/ 16 октября 2008

Если окно консоли закрылось, то, действительно, кажется странным, что процесс все еще выполняется. Можете ли вы подключиться к нему в отладчике Visual Studio? (Очевидно, отладочная сборка.)

Вы уверены, что это не предыдущий прогон, который все еще выполняется?

1 голос
/ 16 октября 2008

Поскольку все другие ответы предполагают, что у вас, вероятно, есть затяжная нить, но не обязательно та, которую вы создали явно, вам может понадобиться вызвать Dispose или что-то подобное для одного или нескольких ваших объектов

1 голос
/ 16 октября 2008

У вас почти наверняка есть не завершенная тема в вашем приложении. Как сказал Джон, присоединитесь к отладчику и посмотрите, какие потоки живы.

...