有人知道我将如何完成以下任务吗?我一直在玩C#中的线程池,我不觉得这会适合它。C#多线程概念问题
启动应用程序
检查新客户>客户端有项目,他们希望一些工作做了。
在执行任务之前解析客户端请求。现在应该排队检查。
检查每个客户端(时间间隔示例:30秒)>执行任务。
同时我必须重复步骤2-3,因为我期待:
- 新客户
- 修改客户端。
- 没有变化。
其需要注意的是会有很多的客户,但他们的任务应该进行相当快的,但我不希望从一个客户的任务需要更长的时间来处理创造一个死锁。
在此先感谢!
有人知道我将如何完成以下任务吗?我一直在玩C#中的线程池,我不觉得这会适合它。C#多线程概念问题
启动应用程序
检查新客户>客户端有项目,他们希望一些工作做了。
在执行任务之前解析客户端请求。现在应该排队检查。
检查每个客户端(时间间隔示例:30秒)>执行任务。
同时我必须重复步骤2-3,因为我期待:
其需要注意的是会有很多的客户,但他们的任务应该进行相当快的,但我不希望从一个客户的任务需要更长的时间来处理创造一个死锁。
在此先感谢!
不是像你一样使用“拉”模型,而是使用“推”模型来代替?也就是说,使用事件而不是每隔x秒检查一次客户端状态。
如果你不能这样做,你可以使用线程池或者一个windows服务。
Riana
我同意我不喜欢根据EventResetArg。 – BlackTea 2011-03-29 15:38:38
我同意推模式在客户端发起的行动将更好地工作,从长远来看,这样的服务器只有当真正要做些什么,而不是不断地轮询工作全部客户端。
客户端可以将请求插入到队列中并由服务器处理它们。这样,您就可以控制服务器可以并行处理多少个请求,而不会对教师产生干扰。
BlockingCollection是在.Net 4中引入的新类,专门为此类工作而设计。 This是一篇关于如何使用它的非常好的文章。如果你刚接触.Net并行编码,你可能想阅读整个系列,非常好的阅读。
GJ
提高您的**收费**。 – 2011-03-26 04:28:45
谢谢,我会牢记这一点。 – BlackTea 2011-03-26 19:33:28
现在应该会更好。 – BlackTea 2011-03-28 00:41:33