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是一个很大的话题,我很抱歉我不能深入了解这里的细节。 但你可以轻松地从这个video开始。 这里有更多video供你使用。

====================下面是旧答案===================

您可以为每个事件启动一个新线程:

 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 } 

每个调用者请求将立即被一个线程响应,因此不会阻止调用者。 完成处理请求后,每个线程都会自动退出,因此系统中不会有太multithreading。

这只是一个简单的解决方案。 您可能需要考虑线程池以提高性能。