应用:
- 使用 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
//......
三种情况:
- 当ServerIP是正确的提供 Web API 服务时,WPF 应用程序工作正常;
- 当ServerIP是一个没有提供正确Web API Service的已知IP时,会导致System.dll中出现异常(SocketException -> WebException -> ObjectDisposedException -> HttpRequestException ->...应该是正常的),但仍然WPF 应用程序不会崩溃;
- 当ServerIP不存在时,System.dll中出现异常(SocketException -> WebException -> ObjectDisposedException -> HttpRequestException ->...再次,应该是正常的),但几分钟后,它会导致“System.Threading .Tasks.TaskCanceledException" 在mscorlib.dll中,然后 WPF 应用程序崩溃。
问题:
- 上述情况3的TaskCanceledException如何处理,防止应用崩溃?
更新1:
- 实际上,我忘了捕获TaskCanceledException,当然可以在应用程序代码中捕获;
所以,问题解决了。