我正在使用我自己没有编写的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() - 方法。
但是如何使用此方法并获得结果呢?有人能为我提供一个如何使用异步调用的简单示例吗?
由于
答案 0 :(得分:1)
这是一个例子:
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表示处理异步结果的委托或操作
如果您将此转换为c#,请告诉我,然后我会更改它;)