1

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

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

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

有没有解决的办法 ?

4

1 回答 1

2

Alt+Tabbing 离开使用 DirectX 的程序会生成“设备丢失”错误代码。此 MSDN 页面中描述:

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

这个错误在游戏逻辑中可能很难处理,因为它恰好在游戏循环的中心出现。显然,您游戏的程序员找到了一个非常棘手但有效的解决方案:他只需重新启动程序。这会恢复程序状态并在重新获取显示后立即让游戏重新开始。

一种可能的解决方法是在 WaitForExit() 完成后休眠一段时间,然后使用 Process.GetProcessesByName() 来确定它是否开始备份。这将为您提供新的项目参考,冲洗并重复。

于 2013-02-07T22:41:55.810 回答