如何在我的XNA游戏中实现类似于OnExit的方法?

3
有没有一种方法可以检测到用户点击交叉按钮关闭程序或按下ALT+F4键关闭C# XNA游戏?可能可以从KeyBoardState中检测到ALT+F4键,但是如何检测点击关闭窗口的操作呢?我需要这个功能来关闭所有正在运行的线程,因为在用户通过任何方式关闭游戏时,有一些线程仍然在运行,这会导致音乐仍然播放。请注意,该方法必须同时兼容Windows和Xbox 360,因为游戏应该在这两个平台(可能还包括Zune)上运行。

可能是重复的问题:如何检查游戏是否已关闭? - Richard Szalay
1个回答

9
要么重写Game类的OnExiting方法,要么订阅它的Exiting事件。
示例:
protected override void OnExiting(Object sender, EventArgs args)
{
    base.OnExiting(sender, args);

    // Stop the threads
}

你能举个例子吗?我试着在继承 Game 类的代码中写下了这段代码:.. - Ahmad
受保护的虚拟函数 OnExiting( Object sender, EventArgs args ) { timeToQuit = true; 退出(); } - Ahmad
尝试将断点设置为第一条指令,然后运行游戏并按下ALT+F4以查看是否到达该断点..但我没有..游戏自然关闭了..这意味着游戏退出到Windows命令ALT+F4以关闭窗口,而不是因为我上面提到的代码。 - Ahmad
你需要将该方法标记为 override, 否则它将不会被调用。 - Richard Szalay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接