如何解决C#中的并行事件处理
| 我正在开发一个模块,该模块必须处理来自外部系统的许多事件。 我必须使用第三方类来提供一个事件(OnNewMessage),该事件将一些参数作为输入,将两个参数作为输出,每个事件都需要花费一些时间才能进行处理。我想以并行方式处理这些事件,以避免阻塞调用者并并行处理多个请求。 这是我的代码示例:void Init()
{
provider.OnNewMessage += new OnMessageEventHandler(processEvent);
}
void processEvent(string xml,int …,out string resultXML,out string description)
{
...
}
在C#3.5中,哪种方法最好?
谢谢
解决方法
我将使用队列来存储事件,然后从线程池的线程束中消耗该队列。
, 这是修改后的答案:
您不想阻止调用方,也希望调用方等待输出。然后,我认为您需要的是Web服务。您为任务定义一个Web服务。然后,调用者调用Web服务以获取结果。 Web服务支持并行处理。
我建议您使用WCF。 WCF具有请求/答复消息模式,其中一个端点从另一个端点请求数据。第二个端点答复。 WCF是一个很大的话题,很抱歉,我无法在这里详细介绍。但是您可以轻松地从此视频开始。这是更多适合您的视频。
====================下面是旧答案====================
您可以为每个事件启动一个新线程:
void processEvent(string xml,int …,out string resultXML,out string description)
{
new Thread(Handler).Start(xml);
}
void Handler(object xml)
{
//do the actual work here
}
每个调用方请求都会立即被线程响应,因此不会阻塞调用方。并且每个线程在完成请求处理后将自动退出,因此系统中不会有太多线程。
这只是一个简单的解决方案。您可能需要考虑线程池以提高性能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。