2012-11-20 40 views
1

我構建了一個Windows服務,我們稱它爲Jobs。我有一個WinForm應用程序,我們稱它爲Viewer。從Windows服務捕獲事件

我想查看器來接收來自喬布斯的事件時,喬布斯開始執行這樣的東西可以查看顯示該作業A啓動用戶,做了一件,停了下來,等

有沒有辦法有喬布斯拋出事件觀衆可以註冊接收?我能想到的最好的解決方案是使用MSMQ,但是我想要一個更直接的方法,在其中啓動Viewer並向Jobs窗口服務註冊,並要求從中接收通知/事件。

我似乎無法弄清楚如何讓Windows Service推送某些東西而不使用MSMQ,或讓其他程序註冊它來接收推送。我絕對不想使用一些奇怪的文件和/或數據庫系統,其中查看器睡眠5秒鐘,然後檢查更改。我希望精簡查看器等待事件的位置,但不必使用MSMQ。

回答

1

您可以使用其中一個WCF雙工綁定,例如netTcpBinding或dualHttpBinding。有一個完整的例子here這似乎正是你想要的。

缺點是雙面打印很複雜,理解並不可靠。如果是這樣做的話,我會始終使用單向通信(通過排隊或其他機制)實施解決方案。一種方法總是比雙工更簡單,更可靠。