1

シンプルな 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'。

4

0 に答える 0