Я написал небольшое консольное приложение на C #, которое используется многими пользователями на сервере общего хранилища. Время выполнения всегда должно быть <3 секунды или около того, и запускается автоматически в фоновом режиме, чтобы помочь другому приложению с графическим интерфейсом, которое пользователь действительно пытается использовать. Из-за этого я хочу убедиться, что программа ВСЕГДА завершается полностью, независимо от того, выдает ли она ошибку или нет. </p>
В Application_Startup у меня есть базовая структура:
try
{
// Calls real code here
}
catch
{
// Log any errors (and the logging itself has a try with empty catch around it
// so that there's no way it can causes problems)
}
finally
{
Application.Shutdown();
}
Я подумал, что с этой структурой мое приложение не сможет стать процессом зомби. Однако, пытаясь выдвинуть новые версии этого приложения, я неоднократно обнаруживаю, что не могу удалить и заменить исполняемый файл, потому что «файл используется», то есть он висит на чьем-то компьютере, хотя он должен работать только для несколько секунд и всегда отключение.
Итак, как получается, что мое приложение, похоже, становится зависающим процессом на компьютерах людей с имеющейся у меня структурой кода? Чего мне не хватает?
Редактировать: Добавлено «Приложение». разрешить ShutDown () для ясности.