1

我构建了一个 Windows 服务,我们称之为 Jobs。我有一个 WinForm 应用程序,我们称之为 Viewer。

我希望 Viewer 在 Jobs 开始执行某事时接收来自 Jobs 的事件,以便 Viewer 可以向用户显示 Job A 开始、做某事、停止等。

有没有办法让 Jobs 抛出 Viewer 可以注册接收的事件?我能想到的最好的解决方案是使用 MSMQ,但是我想要一种更直接的方法,我启动 Viewer 并注册到 Jobs Windows 服务并要求从它接收通知/事件。

我似乎无法弄清楚如何在不使用 MSMQ 的情况下让 Windows 服务推送某些东西,或者让其他程序向它注册以接收推送。我绝对不想使用一些奇怪的文件和/或数据库系统,其中 Viewer 会休眠 5 秒,然后检查更改。我想要简化查看器等待事件的地方,但不必使用 MSMQ。

4

1 回答 1

1

您可以为此使用 WCF 双工绑定之一,例如 netTcpBinding 或 dualHttpBinding。这里有一个完整的例子,它似乎完全符合你的要求。

缺点是双工理解起来很复杂,而且可能不那么可靠。如果可以选择的话,我总是会使用单向通信(通过排队或其他机制)来实现解决方案。一种方式总是比双工更简单、更可靠。

于 2012-11-21T08:00:37.497 回答