更好的.Net 4.0线程控制用户Tiggered事件

时间:2014-07-29 22:31:31

标签: c# .net multithreading

我已经阅读了很多关于.Net 4.0线程的文章。我还没有理解它将如何适用于我的情况。

我有一个.Net 4.0应用程序,它是游戏的聊天机器人。它通过键入来监听可以与机器人交互的用户!和命令。例如:!online将运行将返回用户在线列表的代码。

这是一个插件系统,因此当检测到命令时,每个插件都有一个 public void OnFirehandleCommand(object botArgs)。在代码中,我可以确定该特定命令是否适用于该插件。然后执行代码。 过去的问题是,在该命令的代码完成之前,应用程序不会处理另一个命令。某些命令可能需要几秒钟到4分钟才能完成。

为了解决这个问题,我试图在用户请求命令的入口点使用多线程。我使用以下代码:

 botArgs = new BotArgs {Bot = bot, Args = args};
                    var thread = new Thread(OnFirehandleCommand);
                    thread.Start(botArgs);

这就是我使用的线程的范围。每次给出命令时都会触发。但是,这似乎完全没有任何控制,正如您所看到的,每次收到命令时都会生成一个新线程。 有没有更好的方法可以在这种情况下使用多线程?这样的情况有没有例子?

1 个答案:

答案 0 :(得分:1)

尝试tasks

   var task = System.Threading.Tasks.Task.Factory.StartNew(
               () => OnFirehandleCommand(botArgs));