我需要Dispatcher
(.net 3.0)的替代方案来用于Windows服务(在.net 2.0中完成)。你能告诉我如何实现这样的目标或者给我一些链接吗?
我知道调度员后面有SynchronizationContext
,但我不知道如何将SynchronizationContext
用于服务。
如果您认为我应该坚持Dispatcher
(。net 3.0)......我该如何操纵它(OnServiceStop
,OnServiceStart
)
编辑: 更多详情(另请参阅...... here)
想法是我想在我的Windows服务中托管一些扩展/插件,这些扩展/插件可以通过方法ExecuteCommand(type, params)
在彼此之间进行通信。
此方法还会向服务引发一个事件,以便在从插件内部执行结果时接收结果。每个插件都可以有自己的线程,它调用此方法ExecuteCommand
,所以我想收集并同步所有调用到一个线程(主服务线程),以便适当地返回结果。
这就是Dispatcher发挥作用的原因。但我想在.net 2.0中有一些东西,或者你认为Dispatcher在我的情况下是好的吗?
感谢。
答案 0 :(得分:2)
Windows服务没有Dispatcher
(或Windows窗体中的消息循环)之类的内容。如果你想从一个线程编组到另一个线程,那么“目标”线程必须运行它自己的消息循环。
如果您可以告诉我们更多关于您要实现的目标的信息,那么可以更轻松地为您提供帮助。
编辑:好的,听起来基本上想要一个生产者/消费者队列:一个线程等待队列中存在某些东西,然后对其进行处理。生产者可以随时添加到队列中。
我的线程教程中有一个very simple implementation of a producer/consumer queue,但可能会有更高级的实现。 (.NET 4使这很容易,但在.NET 2中更难。)如果你做采取我的实现,你会想要考虑使它成为通用的并添加终止条件。 Joe Albahari也有another implementation you should look at。