0
我正在开发一个使用.Net Web服务(由我开发)的windows phone应用程序。当我调用Web服务方法时,请异步执行,不要阻止UI。例如,下面是一个代码示例,用于向服务器询问列表o到达航班的列表。取消windows phone中的异步web服务调用
service.MobileWSSoapClient Proxy { get; set; }
Proxy = new service.MobileWSSoapClient();
Proxy.GetArrivalsCompleted += proxy_GetArrivalsCompleted;
Proxy.GetArrivalsAsync(searchFilter);
这样,我给的自由,用户再次调用相同的方法或另一个(例如:刷新到来列表或搜索特定到达)。如果用户产生新的服务呼叫,应用程序应该“取消”第一个电话,并只显示最后一次电话的结果。我认为这在技术上是不可能的,取消已经到服务器的Web服务调用,我们应该等待服务器响应,然后忽略它。了解到这一点,将标记以某种方式标记为过时会很有帮助。作为该过时呼叫的响应,接收错误就足够了。我会写一个我想象/需要的伪代码。
void proxy_GetArrivalsCompleted(object sender, service.GetArrivalsCompletedEventArgs e){
if (e.Error == null){
// DO WORK
}
else
{
if(e.Error == Server Exception || e.Error == Connection Exception){
MessageBox.Show("error");
}
else if (e.Error == obsolete call){
// DO NOTHING
}
}
在此先感谢。
当我从BackgroundWorker调用Web服务器时,它只是调用它并结束它的工作。意味着它不会等到服务器响应。 – nachoifa 2013-03-18 21:35:09