[英]Asyncronous call to web service
我正在使用未编写自己的Web服务(因此无法进行编辑)。 我有以下代码:
public void GetData()
{
try
{
TelemeterServiceClient client = new TelemeterServiceClient();
RetrieveUsageRequestType request = new RetrieveUsageRequestType { UserId = Username, Password = Password };
RetrieveUsageResponseType response = client.retrieveUsage(request);
Result = response.Item;
Callback(null);
}
catch (Exception e)
{
Result = null;
Callback(e);
}
}
在WPF项目中,这可以正常工作。 但是,我现在正在使用使用Silverlight的Windows Phone项目。 在此项目中,找不到retrieveUsage()方法。
显然,Silverlight仅支持对Web服务的异步调用。 实际上,存在一个retrieveUsageAsync()方法。
但是,如何使用这种方法并获得结果呢? 有人可以为我提供一个有关如何使用异步调用的简单示例吗?
谢谢
这是一个例子:
Dim proxy = new TelemeterServiceClient()
AddHandler proxy.retrieveUsageCompleted, Sub(o, e)
action(o, e)
End Sub
Using New OperationContextScope(proxy.InnerChannel)
Dim request = New retrieveUsageRequest
proxy.retrieveUsageAsync(request)
End Using
认为它像这样翻译成c#:
var proxy = new TelemeterServiceClient();
proxy.retrieveUsageCompleted += MethodYouImplementWhenAsyncIsComplete;
//or proxy.retrieveUsageCompleted += (s, e) => { do something };
using (new OperationContextScope(proxy.InnerChannel))
{
var request = New retrieveUsageRequest();
proxy.retrieveUsageAsync(request);
}
与action
,action代表您处理异步结果的委托或action。
让我知道如果您在将其转换为C#时遇到麻烦,那么我将对其进行更改;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.