为什么这个键盘输入会冻结屏幕?

时间:2011-01-04 17:20:18

标签: c# .net wpf

当我按下以下任意一个键时,我要移动的对象移动一个方格然后冻结。当我松开钥匙时,屏幕解冻,物体移动了很多。 为什么会这样?我该如何解决这个问题? 我正在使用WPF:


private void MainWindow_KeyDown(object sender, KeyEventArgs e)
{
            if (e.Key == Key.W)
            {
                playerService.move(Player.id, PlayerService.Direction.UP);
            }
            if (e.Key == Key.S)
            {
                playerService.move(Player.id, PlayerService.Direction.DOWN);
            }
            if (e.Key == Key.A)
            {
                playerService.move(Player.id, PlayerService.Direction.LEFT);
            }
            if (e.Key == Key.D)
            {
                playerService.move(Player.id, PlayerService.Direction.RIGHT);
            }
}

编辑:我正在使用以下事件进行绘制。如何控制我阻止UI线程的这个问题?


CompositionTarget.Rendering += new EventHandler(Draw);

1 个答案:

答案 0 :(得分:2)

这是因为你在UI线程中阻塞了。我知道这是.NET,但引用了我对Java中类似问题的另一个答案。

Skipping over Java KeyEvents

<强>更新

我建议调查这个项目并确定他们如何处理重要事件。

http://www.codeproject.com/KB/WPF/GrandPrix.aspx

这是一款使用WPF编写的赛车游戏。

相关问题