我正在开发一个使用 .Net Web 服务的 Windows Phone 应用程序(也由我开发)。当我调用 Web 服务方法时,它会异步执行并且不会阻塞 UI。例如,这是一个代码示例,用于向服务器询问航班到达列表。
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
}
}
提前致谢。