异步调用Web服务
问题描述:
我正在使用Web服务我没有自己写(所以不能编辑)。我有这样的代码:异步调用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
行,动作代表一个委托或动作,你处理你的异步结果
让我知道你是否有麻烦es翻译成c#然后我会改变它;)
谢谢。如果你可以把它翻译成C#,那将会非常好,因为我完全不理解这个代码。 – Bv202 2013-02-18 10:42:45
@ Bv202:想一想C#,可能会出现一点语法错误,但它应该是关闭的 – JMan 2013-02-18 10:48:58
谢谢,我会测试它:) – Bv202 2013-02-18 10:49:52