簡化了我想要實現的版本:自託管(WinForm)WCF服務如何與主窗體進行交互?
- 我有在後臺運行,隱藏(visible = FALSE)WinForms應用程序。
- 它只有一個窗體,並保留默認名稱 - Form1
- 此WinForms應用程序託管一個WCF服務。現在我們將其稱爲監聽器服務。
- 該偵聽器服務有一個稱爲函數「DisplayAlert()」這是作爲服務公開功能
- 應用程式坐在另一臺機器上通過一個標準的WCF服務呼叫
我將消息發送到所述偵聽器服務上面所有的工作都很好。在調用DisplayAlert()函數時,我可以遍歷代碼並觀察消息流。
我想不通,我不能相信這是很難找到如何做這個簡單:
- 我想在託管服務交互的DisplayAlert()函數直接使用WinForm來託管它以使窗體可見。
我想要做的就是將Visibility設置爲true,並在WinForm上調用另一個函數。
在我看來,它應該像添加對錶單的引用,或者在表單上創建公共函數並從服務類調用它一樣簡單,但我甚至無法弄清楚如何引用Form1從服務類內。
我錯過了一些明顯的東西嗎?我怎樣才能參考託管服務的Form1的實例?
我已南下的路徑....
- 創建於ListenerService(AlertReceived,虛擬無效OnAlertReceived)事件,以爲Form上,我可以添加一個事件處理程序。
- 沒有骰子。我沒有直接實例化ListenerService類,它在ServiceHost中運行。
- 試圖從類內部引用應用程序對象,認爲我可以將它引用爲Application.Form1,但不是。我甚至無法從服務類中看到Application對象。
- 我可能在這裏丟失了一些明顯的東西,但我不確定。
其他建議?
如果有幫助,我可以添加代碼。
如果有沒有一個辦法直接做到這一點,我把它看作一個答案,並重新思考設計。 – David