机应用:
- 使用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服务的已知IP时,这将导致System.dll中的异常(SocketException - > WebException - > ObjectDisposedException - > HttpRequestException - > ...哪些应该是正常的),但WPF应用程序仍然不会崩溃;
- 当 ServerIP 不存在时, System.dll 引起异常(SocketException - > WebException - > ObjectDisposedException - > HttpRequestException - > ...再次,这应该是正常的),但几分钟后,它将导致 mscorlib.dll 中的“System.Threading.Tasks.TaskCanceledException”,然后WPF应用程序崩溃
醇>
问题:
- 如何在上面的情况3中处理TaskCanceledException,并防止应用程序崩溃?
UPDATE1 :
- 实际上,我忘了捕获TaskCanceledException,当然可以在应用程序代码中捕获;
所以,问题解决了。