从辅助线程读取输入

时间:2010-03-09 15:26:20

标签: c# multithreading xna

我有一个XNA应用程序,我需要将输入队列重定向到自定义线程,而不是只在主线程中使用它。是否有AttachThreadInput的替代方法?

2 个答案:

答案 0 :(得分:1)

我做了一些搜索,我认为你不会找到解决这个问题的好方法。这个post表示如果你“创建一个新的输入类,在我的游戏主线程中注册这些事件,然后启动线程开始轮询,这可能是可能的。”

这两个主题(包括你在XNA论坛上开始的那个)的普遍共识向我表明,尝试将键盘输入发送到另一个线程可能不是最好的主意,如果可能的话,主要是线程应该只处理键盘输入,而另一个线程可以从主线程的共享存储中读取输入。另一种方法是主线程告诉辅助线程根据收到的输入执行某些功能。

Keyboard access from other thread
Keyboard Input on Another Thread

答案 1 :(得分:0)

我不太确定你在问什么,但我会尽力回答。

如果您正在尝试创建一个多人游戏,并希望线程处理每个玩家的输入,您必须执行以下操作:

  • 在main中创建与Keyboard / Mouse / Gamepads相关的XNA对象 你的执行线程 申请

  • 通过引用将对象传递给自定义输入处理线程。

线程与生成它们的进程共享内存,因此通过使用引用的对象,可以在线程外部自动访问从自定义线程内部对对象所做的任何更改。

希望这有帮助。