【发布时间】:2015-04-24 11:21:41
【问题描述】:
第 3 方提供了一个界面,允许我在他们的数据库中搜索客户并检索他们的详细信息。例如。图片,出生日期等。
我将他们的 WSDL 导入 Visual Studio,并使用 Async 方法检索客户详细信息。
MyClient Client = new MyClient();
Client.FindCustomersCompleted += FindCustomersCompleted;
Client.GetCustomerDetailsCompleted += GetCustomerDetailsCompleted;
Client.FindCustomersAsync("Jones");
以下是处理响应的两个事件。
void FindCustomersCompleted(object sender, FindCustomersCompletedEventArgs e)
{
foreach(var Cust in e.Customers)
{
Client.GetCustomerDetailsAsync(Cust.ID);
}
}
void GetCustomerDetailsCompleted(object sender, GetCustomerDetailsCompletedEventArgs e)
{
// Add the customer details to the result box on the Window.
}
假设我对“Jones”的初始搜索没有返回任何结果或导致错误。告诉用户有错误或没有找到结果是相当直接的,因为我只会收到一个响应。
但是,如果我说为“Jones”获得 50 个结果,那么我会进行 50 个 GetCustomerDetailsAsync 调用并获得 50 个响应。
假设服务器端出了点问题,我没有得到任何有效的响应。每个 GetCustomerDetailsCompleted 事件都将收到错误/超时,我可以确定该单个响应已失败。
确定我的所有响应都失败并且我需要通知用户失败的最佳方法是什么? 或者,如果 50 人中有 1 人成功了怎么办?
我是否应该跟踪我的请求并在收到响应时将它们标记为成功?
【问题讨论】:
标签: c# asynchronous error-handling wsdl