1

我需要(.net 3.0)的替代品用于DispatcherWindows 服务(在 .net 2.0 中完成)。你能给我一些想法如何实现这样的事情或给我一些链接吗?

我知道调度员有一个SynchronizationContext背后,但我不知道如何使用SynchronizationContext一个服务。

如果您认为我应该坚持使用Dispatcher(.net 3.0) ...我该如何操作它 ( OnServiceStop, OnServiceStart)

编辑: 更多细节(另见......这里

想法是我想在我的 Windows 服务中托管一些扩展/插件,这些扩展/插件将通过方法相互通信ExecuteCommand(type, params)

如果它是从插件内部执行的,此方法还会向服务引发一个事件,以便接收结果。每个插件都可以有自己的线程,从那里调用此方法ExecuteCommand,因此我想将所有调用收集并同步到一个线程(主服务线程)中,以便适当地返回结果。

这就是 Dispatcher 发挥作用的原因。但我想在 .net 2.0 中拥有一些东西,或者你认为 Dispatcher 对我来说好用吗?

谢谢。

4

1 回答 1

2

Windows 服务没有类似的Dispatcher(或 Windows 窗体中的消息循环)。如果你想从一个线程编组到另一个线程,“目标”线程必须运行它自己的消息循环。

如果你能告诉我们更多关于你想要达到的目标,它会更容易帮助你。

编辑:好的,听起来基本上想要一个生产者/消费者队列:一个线程等待队列中出现某些东西,然后处理它。生产者可以随时添加到队列中。

在我的线程教程中,我有一个非常简单的生产者/消费者队列实现,但可能还有更高级的实现。(.NET 4 使这很容易,但在 .NET 2 中更难。)如果您确实采用了我的实现,您将需要考虑使其成为通用并添加终止条件。Joe Albahari 还有另一个你应该看看的实现

于 2010-08-11T07:25:36.243 回答