我创建了简单的 XNA 全屏应用程序。如果它处于活动状态并且系统在恢复后进入睡眠模式或休眠模式,则应用程序将崩溃。我怎么解决这个问题?
UPD:我为系统消息添加了处理程序
public Game()
{
SystemEvents.PowerModeChanged += OnPowerChange;
this.graphics.PreferredBackBufferWidth = 1920;
this.graphics.PreferredBackBufferHeight = 1080;
this.graphics.PreferredBackBufferFormat = SurfaceFormat.Bgr565;
this.graphics.IsFullScreen = true;
}
void OnPowerChange(Object sender, PowerModeChangedEventArgs e)
{
switch (e.Mode)
{
case PowerModes.Suspend:
graphics.PreferredBackBufferWidth = 800;
graphics.PreferredBackBufferHeight = 600;
graphics.ToggleFullScreen();
graphics.ApplyChanges();
break;
}
}
如果应用程序处于窗口模式,则 OnPowerChange() 可以正常工作并将分辨率从 1920x1080 更改为 800x600。但是如果应用程序是全屏模式,则不会调用此方法。另外,我在这里遇到运行时错误
static void Main(string[] args)
{
using (Game game = new Game())
{
game.Run();
}
}
错误是:无法访问已处置的对象。对象名称:“WindowsGameForm”。