我已經用C#編寫了Windows服務。僅出於測試目的,我需要將臨時WPF前端放到服務上。我正在使用WPF服務中的ServiceController
類來允許服務啓動和停止,但是我需要在測試期間向測試人員發送數據以便知道何時有足夠的數據通過服務停止服務。如何從WPF和C調用Windows服務異步#
回答
可以使用屬性:
[OperationContract (IsOneWay = true)]
或者異步
添加的方法爲您服務,提供您所需要的信息裏面,然後你可以選擇你的UI內的事件調用該方法。
比方說,每次一個按鈕被點擊到你的用戶界面,你打電話給你的服務方法>
private void Button_Click(object sender, EventArgs e)
{
yourservice.GetInfo();
}
我的建議是,你選擇最適合您需求的最佳情況下,你甚至可以把它在每一個事件這發生在你的用戶界面中。
您可以創建一個帶有while循環的異步方法,它可以在某個給定的時間保持檢查您的服務。
public async Task<int> CheckServiceAsync()
{
while(condition)
{
Thread.Sleep(1000);
return service.GetInfo();
}
}
然後在您的UI:
TextBox.Text = await CheckServiceAsync();
我想異步的方式是最好的,因爲你的UI將不會被鎖定在等待您的服務響應。
編輯:
你需要的方式2個應用程序之間進行通信。我以爲你已經成立了。您需要一個WCF(您可以使用命名管道)應用程序在它們之間進行通信。您的服務和您的WPF應用程序正在運行在不同的進程中。檢查this。 NetNamedPipeBinding是同一臺機器上進程的最快速度。
命名管道(不使用WCF)是有點低級別,它可以很難。 WCF更容易,你可以非常快地設置事物(一旦你知道你在做什麼)。設置你的WCF,在這個答案中使用我給你的邏輯,你會很好。
檢查this WCF tutorial。它具有您需要的配置基礎知識,但請確保您使用NetNamedPipeBinding作爲綁定。
因爲我正在使用Windows服務,所以在服務本身中,我在'Program'類中創建了一個公共靜態布爾標誌。該服務設置。我在向wpf應用公開該標誌時遇到問題 – bilpor
我用我所說的更新了我的答案,並刪除了評論。請檢查一下。快樂的編碼。 ;) –
@bilpor你有看到我的更新嗎? –
- 1. WPF/WCF異步服務調用和同步上下文
- 2. 如何從C#winform異步調用Soap/mtom Web服務
- 3. 在c中調用異步web服務#
- 4. 如何異步調用wcf服務
- 5. 如何調用異步SOAP Web服務?
- 6. AngularJS:異步$ http.jsonp從服務調用
- 7. 從Java異步調用.NET Web服務
- 8. 從wcf服務調用異步方法
- 9. 異步調用要服務
- 10. CXF異步服務調用
- 11. 異步web服務調用
- 12. 異步Web服務調用
- 13. 調用Web服務異步
- 14. 異步調用Web服務
- 15. 在windows服務中託管的WCF服務的異步調用
- 16. 來自Windows服務的異步WCF服務調用
- 17. Windows Mobile 6.1異步Web服務調用問題和更新UI
- 18. 異步停止Windows服務
- 19. 如何使用C#.NET中的Windows服務調用Windows服務?
- 20. 如何從ASP.NET應用程序異步調用Web服務?
- 21. 如何在C#中進行異步Web服務調用?
- 22. 來自WPF應用程序的異步Web服務調用
- 23. 錯誤在WPF應用程序異步調用WCF服務
- 24. VS2010:調試WCF服務異步調用
- 25. 異步Web服務調用返回null(從ASP.NET異步頁面調用)
- 26. 從windows服務c調用javascript函數#
- 27. c#從web api調用windows服務
- 28. 如何強制異步Web服務調用充當同步?
- 29. 如何從Windows服務調用WebAPI
- 30. 如何從Windows服務調用REST API
這是一個Windows服務不是WCF服務 – bilpor
對不起,我以爲這是Wcf。 – Jsperk