从Windows服务捕获事件

时间:2012-11-20 23:15:22

标签: windows-services msmq

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

我希望Viewer在Jobs开始执行某些操作时从Jobs接收事件,以便Viewer可以向用户显示Job A启动,执行某些操作,停止等等。

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用其中一个WCF双工绑定,例如netTcpBinding或dualHttpBinding。有一个完整的示例here,它似乎完全符合您的要求。

缺点是双工很难理解,可能不那么可靠。我总是使用单向通信(通过排队或其他机制)实现解决方案,如果它是一个选项。一种方法总是比双工更简单,更可靠。