【发布时间】:2012-10-27 08:23:11
【问题描述】:
我对线程有点陌生(对 C# 并不陌生,只是没有做太多线程)。有人可以向我解释为什么这不起作用吗?
我有一个线程调用我将调用“循环”的方法。 Loop 包含一个 while 循环,它将持续运行,并且在 while 的每个循环中,我希望它检查 A 键是否已关闭(使用 XNA 框架中的 Microsoft 键盘类)。但由于某种原因,它永远不会记录正在按下任何东西。
static Thread thread = new Thread(Loop);
static bool abort = false;
public static void Begin()
{
thread.Start();
}
private static void Loop()
{
while (!abort)
{
if (Keyboard.GetState().IsKeyDown(Keys.A))
Console.WriteLine("A pressed.");
}
}
可能有人知道为什么永远不会调用 Console.WriteLine() 吗?
编辑:
我想我应该稍微解释一下。我实际上想要做的是在 C# 中创建类似于 ActionScript 的事件。因此,如果在包含该线程的这个单独的类中满足该条件,我想传递一个“条件”和一个“动作”来调用。这将允许我只向对象添加“事件侦听器”,它会自动不断地检查是否触发了其中一个事件,而不是让我在代码中编写 If 语句来检查事件。
在尝试这样做时,我测试的第一件事是关于这个 XNA 键盘的东西,因为这是我最初想要构建这个系统的原因之一,但它没有工作。所以我创建了我在上面发布的独立代码,看看我之前的代码是否出错,它仍然没有工作。
【问题讨论】:
标签: c# multithreading xna-4.0