當達到某個標準時,我的應用程序運行Application.Restart重新啓動應用程序。這留下了一個進程掛起,以便當應用程序恢復時它會抱怨它已經在運行(我有代碼來檢查應用程序只允許一個實例)。Application.Restart使進程掛起
這個過程可以通過調用Environment.Exit來消除,但是這與Application.Restart衝突。 當重新啓動被調用,然後Environment.Exit,重新啓動被中止,應用程序只是退出而不嘗試重新啓動。
我該如何解決這個問題?
更多信息:
我的主類實例化一個子類。如果滿足某些條件,此子類將調用Application.Restart。 這會導致.Net調用主類上的FormClosed事件。此事件調用Environment.Exit以確保在用戶退出應用程序時所有進程都關閉,導致重新啓動被中止。
我添加了一個標誌,指出它是否是軟件重新啓動,並在您的示例中檢查Process.Start周圍的標誌。這使得程序停止了。但是,我的應用程序啓動太快,所以當它檢查已有的進程時,其他進程還沒有完成退出。我通過在檢查其他進程之前添加一個簡單的Thread.Sleep來解決這個問題。 – GTHvidsten