2

应用:

  • 使用 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 Service的已知IP时,会导致System.dll中出现异常(SocketException -> WebException -> ObjectDisposedException -> HttpRequestException ->...应该是正常的),但仍然WPF 应用程序不会崩溃;
  3. ServerIP不存在时,System.dll中出现异常(SocketException -> WebException -> ObjectDisposedException -> HttpRequestException ->...再次,应该是正常的),但几分钟后,它会导致“System.Threading .Tasks.TaskCanceledException" 在mscorlib.dll中,然后 WPF 应用程序崩溃

问题:

  • 上述情况3的TaskCanceledException如何处理,防止应用崩溃?

更新1

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

所以,问题解决了

4

0 回答 0