我寫了一個小型C#控制檯應用程序,供許多用戶在共享存儲服務器上使用。它的運行時間應該總是在3秒鐘左右<,並在後臺自動運行,以幫助用戶真正嘗試使用的另一個GUI應用程序。因此,我想確保程序總是完全退出,不管它是否引發錯誤或不是。如何確保C#控制檯程序總是退出?
在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()。
不要從共享驅動器運行應用程序。在主應用程序中包含一些升級邏輯,以將控制檯應用程序複製到本地計算機,或將邏輯移動到主應用程序中,以便在單獨的線程上運行。 –
'ShutDown()'究竟發生了什麼? –
@KyleTrauberman,我認爲你是對的,我將把它放在後面,但我仍然想知道確保C#應用程序始終關閉的最佳實踐/最佳方法,無論出現什麼錯誤或什麼情況。 – JoeCool