当应用程序失去焦点时,WaitForExit进程结束

时间:2013-02-07 21:23:55

标签: c# process

我正在尝试做这样的事情:

var process = Process.Start("MyGame.exe");
process.WaitForExit();
MessageBox.Show("Game is closed");

事情就是当我Alt + Tab我的应用认为游戏退出游戏然后显示消息时。我想完全等待程序在消息出现之前关闭。

有解决方法吗?

1 个答案:

答案 0 :(得分:2)

Alt +从使用DirectX的程序中删除会生成“设备丢失”错误代码。在this MSDN page中描述:

  

根据设计,未指定可导致设备丢失的全套方案。一些典型示例包括失去焦点,,例如当用户按下ALT + TAB 或初始化系统对话框时。设备也可能因电源管理事件或其他应用程序采用全屏操作而丢失。此外,来自IDirect3DDevice9 :: Reset的任何故障都会使设备进入丢失状态。

这个错误在游戏逻辑中很难处理,因为它在游戏循环的核心中发挥作用。显然,你的游戏程序员找到了一个非常hacky但有效的解决方案:他只是重新启动程序。这样可以恢复程序状态,并在重新获取显示后立即重新开始游戏。

一种可能的解决方法是在WaitForExit()完成后暂停一段时间,然后使用Process.GetProcessesByName()来查看它是否重新启动。这将为您提供新的项目参考,冲洗和重复。