2014-09-12 115 views
2

一段時間以來,我的團隊一直在使用WCF服務(在wsHTTP綁定中自行託管)以及與之通信的ASP網站。 WCF服務中的所有方法都是同步調用的,並且沒有來自網站的錯誤。在Windows Phone 8中使用WCF服務:異步方法?

但是,隨着Windows Phone 8應用程序的添加,引入了一種複雜化:WCF方法不能同步調用,它們必須異步調用。即使沒有WP8,同步版本的方法也不可用異步方法已在WCF中定義。

這引入了在不實際修改服務代碼的情況下使用此wcf服務的挑戰。這可能嗎?如果不是,那麼WCF實現如何修改以支持異步方法調用?有沒有可以幫助解決這個特定問題的資源?我一直在搜索整個下午,但這似乎是一個非常具體的問題。

任何幫助,非常感謝。

+1

只有在客戶端調用是異步,服務器操作調用還是同步... – 2014-09-12 12:09:17

+0

好了,當我這樣做server.getDataAsync(),你說我要去需要的東西在我的客戶端處理該操作完成?你能否詳細說明一下? – DrSatan1 2014-09-12 12:11:42

+0

查看下面的回答 – 2014-09-12 12:18:02

回答

2

只有在客戶端調用/代碼是異步的,服務器操作調用還是同步...

客戶端代碼:

var svc = new ServiceReference1.Service1Client(); 
svc.GetDataCompleted += (s, a) => 
{ 
    MessageBox.Show(a.Result); 
}; 
svc.GetDataAsync(42); 

Server代碼:

[OperationContract] 
public string GetData(int value) 
{ 
    return "hello world: " + value; 
} 

也許這篇文章幫助您:

+0

謝謝你的回覆。不幸的是我的項目是在VB.net(我知道。)所以我有點不熟悉你的客戶端代碼的語法。特別是你能解釋一下這是幹什麼的嗎?: svc.GetDataCompleted + =(s,a)=> 當我嘗試在VB中做類似的事情時,我得到的消息是「GetDataCompleted是一個事件,不能直接調用,使用RaiseEvent調用事件「 – DrSatan1 2014-09-12 12:20:45

+0

將WCF服務添加爲服務引用後,可以創建服務客戶端並調用異步方法。當通話結束後,相應的事件被觸發,結果是通話... – 2014-09-12 12:21:57

+0

您需要爲該事件添加回調... – 2014-09-12 12:26:31