Process.WaitForExit不返回与ALT + F4

时间:2019-02-14 09:33:17

标签: c# .net windows

我正在为多个Unity3D和Unreal小项目编写一个WPF启动器应用程序,该项目从中心应用程序(也是U​​nity)读取退出代码,以根据接收到的退出代码启动其他项目。

不幸的是,其中一些小项目没有实现“干净出口”,需要通过ALT+F4终止,而由于某些原因,WaitForExit并没有被我的启动器应用程序注册。

退出代码部分与有问题的项目无关。我只将退出代码用于集线器应用程序。从集线器应用程序启动它们可以正常工作,并且如果它们具有某种退出方式,则我的启动器将像魅力一样运行。

我正在使用private static Process currentRunningProcess; public static void StartApp(string applicationPath) { if (currentRunningProcess != null) return; currentRunningProcess = new Process { StartInfo = new ProcessStartInfo(applicationPath) }; currentRunningProcess.Start(); } //this function is used both for the hub app and for the little projects to //avoid having two functions that basically do the same //the exit code is only used for the hub app and ignored for anything else public static int GetExitCode() { currentRunningProcess.WaitForExit(); var exitCode = currentRunningProcess.ExitCode; currentRunningProcess = null; return exitCode; } 且没有超时,因为如果用户不退出,应用程序将无限期运行。

ALT+F4

我是否缺少某些东西,或者应该以这种方式工作?如果第二种情况是正确的,我如何改善我的实现以注册(?:\sFROM\s|\sINTO\s|\sNEXTVAL[\s\W]*|^UPDATE\s|\sJOIN\s)[\s`'"]*([\w\.-_]+) 化的应用程序?

(不幸的是,不可能为小项目实现干净的出口,因为其中一些是来自第三方提供商的委托,而我没有源代码)

1 个答案:

答案 0 :(得分:1)

好吧,原来问题出在我从启动器启动的虚幻引擎应用程序中。由于某种原因,虚幻引擎正在启动两个进程,而只有第二个进程受Alt+F4影响。

由于原始进程从未关闭,因此我的启动器无法检测到它已关闭。

感谢@Damien_The_Unbeliever将我指向任务管理器。我不知道为什么我在这里张贴之前没有检查。