当达到某个条件时,我的应用程序运行Application.Restart重新启动应用程序。这就留下了一个进程挂起,所以当应用程序恢复时,它会抱怨它已经在运行(我有代码来检查只允许应用程序的一个实例)。
可以通过调用Environment.Exit来消除此过程,但这与Application.Restart冲突。当重新启动被调用,然后是Environment.Exit时,重启将被中止,应用程序只是退出而不尝试重新启动。
我怎么才能避开这一切?
更多的信息:
我的主类实例化一个子类。如果满足某些条件,则此子类调用Application.Restart。这导致.Net调用主类上的FormClosed事件。此事件调用Environment.Exit以确保在用户退出应用程序时关闭所有进程,这将导致重新启动被中止。
发布于 2015-04-07 11:28:28
Environment.Exit(0)是内核32.dll中ExitProcess(0)的API等价物。它会立即终止这个过程。当主线程正在处理时,Application.Exit和Application.Restart都可以挂起。
对于您的情况,我建议使用Environment.Exit并在此之前启动一个新实例:
System.Diagnostics.Process.Start(Application.ExecutablePath);
Environment.Exit(0)这将使绝对退出您的应用程序。
发布于 2015-04-07 11:27:37
根据猜测,代码中的某些内容会阻止应用程序在重新启动之前正确关闭,因此请确保检查您的代码(即FormClosed)。尝试使用可执行路径启动一个新进程,然后关闭原始进程。
System.Diagnostics.Process.Start(Application.ExecutablePath);
Application.Exit();希望能帮上忙!
编辑:
这应该是有帮助的,所以可能是dup!
https://stackoverflow.com/questions/29490252
复制相似问题