来自未知IP地址的GetAsync导致应用程序崩溃

时间:2013-01-08 08:19:31

标签: asynchronous asp.net-web-api httpclient

机应用:

  • 使用HttpClient从Web API异步获取数据的WPF应用程序(例如:“http://< ServerIP > / api / GetData”)
  • 获取数据间隔:3s;

示例代码:

    //initialize
    _httpClient.BaseAddress = new Uri("http://192.168.1.100");
    _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));


    //get data method
    //......
    var response = await _httpClient.GetAsync(uri); //called every 3 seconds
    //......

三种情况:

  1. ServerIP 是提供Web API服务的权利时,WPF应用程序正常工作;
  2. ServerIP 是未提供正确的Web API服务的已知IP时,这将导致System.dll中的异常(SocketException - > WebException - > ObjectDisposedException - > HttpRequestException - > ...哪些应该是正常的),但WPF应用程序仍然不会崩溃;
  3. ServerIP 不存在时, System.dll 引起异常(SocketException - > WebException - > ObjectDisposedException - > HttpRequestException - > ...再次,这应该是正常的),但几分钟后,它将导致 mscorlib.dll 中的“System.Threading.Tasks.TaskCanceledException”,然后WPF应用程序崩溃
  4. 问题:

    • 如何在上面的情况3中处理TaskCanceledException,并防止应用程序崩溃?

    UPDATE1

    • 实际上,我忘了捕获TaskCanceledException,当然可以在应用程序代码中捕获;

    所以,问题解决了

0 个答案:

没有答案