【发布时间】:2012-12-17 19:09:21
【问题描述】:
我很困惑,我需要你的帮助。
我有一个 WPF 应用程序,它使用 ASYNC 和 AWAIT 调用 WEBAPI,我的 UI 出现延迟。
这是我正在使用的代码...
HttpResponseMessage response = await WEBAPI.GetHttpClient().GetAsync("api/COStateType/GetStateTypesByCountryID/" + Constants.COUNTRY_ID_USA);
response.EnsureSuccessStatusCode();
App.stateTypes = await response.Content.ReadAsAsync<List<coStateType>>();
GetHttpClient 代码...
public static HttpClient GetHttpClient()
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(ConfigurationManager.AppSettings["ABS2.WEBAPI.Uri"]);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return client;
}
这里是主要问题...
在启动过程中,我会显示一个带有移动齿轮(动画)的启动画面。实现对 WEBAPI 的调用后,动画不再流畅。我已经读到使用 HttpClient 的 ASYNC 调用会导致 UI 阻塞,这就是我的动画所发生的情况。
问题来了……
这个问题有什么办法吗?我尝试将此调用包装在 BackgroundWorker 和/或 Task 中,但均未解决问题。是否有另一种与不会导致此 UI 阻塞的 WEBAPI 通信的方式?我做错了什么?
非常感谢您的帮助!!!
【问题讨论】:
标签: c# wpf async-await asp.net-web-api