2011-05-30 42 views

回答

3

是否有可能在WPF應用程序

一個WCF監聽器/服務。它是相當簡單的你想要的任何地方創建一個WCF服務監聽器/服務器。

var servicehost = new ServiceHost(typeof(SomeService)) 
servicehost.Open(); 

一個問題是,您必須擁有足夠的權限才能顯示主機。您可能必須提升您的應用程序,並且肯定必須確保防火牆(軟件/硬件)允許流量到達它。

此鏈接似乎涵蓋了WCF MSDN樣的網絡設置,都適用於IIS託管,以及你的情況下,非IIS託管WCF:

http://msdn.microsoft.com/en-us/library/ms751527(v=vs.90).aspx

此外,你可能會碰到線程複雜化,儘管在任何情況下您都會遇到這些問題,因爲您嘗試從後臺線程更新UI。如果您有問題,這一點,看看在Dispatcher

http://msdn.microsoft.com/en-us/magazine/cc163328.aspx

之後,它是由你來創建一個客戶機/服務器設計,可確保在創建服務,並在正確的時間聽, (ServiceHostIDisposable),並且它正確地處理狀態(如果操作在你不期望的時候被調用 - 在任何軟件中總會有錯誤)。

然後再調用這個服務在WPF應用程序

WPF打開屏幕創建代碼,您可以調用或多或少你的WinForms會以同樣的方式。例如,您仍然可以撥打new MainWindow().Show()電話。所以只需將這些代碼添加到您的服務實現中。

1

是的,你可以在WinForms和WFP應用程序中託管WCF服務 - MSDN contains some sample。取決於你如何託管服務,你必須以不同的方式處理UI交互 - 在UI和其他線程之間進行託管是有區別的,因爲其他線程無法直接訪問UI控件。

相關問題