共有ストレージサーバー上の多くのユーザーが使用する小さなC#コンソールアプリを作成しました。実行時間は常に3秒未満である必要があり、ユーザーが実際に使用しようとしている別のGUIアプリを支援するために、バックグラウンドで自動的に実行されます。このため、エラーがスローされるかどうかに関係なく、プログラムが常に完全に終了することを確認したいと思います。
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()を解決します。