次のコードを使用して、XNA アプリケーションでキーボードの状態を取得しようとしています。
this.OldKeyboard = this.NewKeyboard;
this.NewKeyboard = Keyboard.GetState();
this.OldMouse = this.NewMouse;
this.NewMouse = Mouse.GetState();
ただし、ゲームを開始すると、次のメッセージが表示されることがあります (約 60% と思います) 。InvalidOperationException
An invalid operation occurred when trying to query the keyboard state.
The result code was 126.
at Microsoft.Xna.Framework.Input.Keyboard.GetState(PlayerIndex playerIndex)
at Microsoft.Xna.Framework.Input.Keyboard.GetState()
at GameLib.GameBase.Update(GameTime gameTime) in MY_PATH\GameLib\GameLib\GameBase.cs:Line 58.
at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
at ...
Google と SO で検索しても、このコードに関する結果は得られませんでした。
これの原因は何でしょうか?また、プロジェクトの開始時に時々発生するだけで、毎回発生しない、またはまったく発生しないのはなぜですか?
編集:私のスレッドのレイアウト:
- メインスレッド
- 始まる
Game.Run
- 別のプロジェクトでネットワーク初期化子を開始します ( 内
Initialize
) - ネットワーク I/O 用の新しいスレッドを開始します
のみを含む新しいプロジェクトを作成するKeyboard.GetState()
と、 のエラー コードが表示0
されるようです。
ERROR_SUCCESS
0 (0x0)
操作は正常に完了しました。
以下のスクリーンショットを参照してください。なぜ成功するとInvalidOperationException
.