Riv*_*vka 1 asp.net-web-api dotnet-httpclient
我有代码来读取ASP.NET Web API的响应,如下所示:
HttpClient client = new HttpClient();
client.GetAsync(path.ToAbsoluteUrl()).ContinueWith(
(requestTask) =>
{
HttpResponseMessage response = requestTask.Result;
response.EnsureSuccessStatusCode();
response.Content.ReadAsAsync<DBResult>().ContinueWith(
(readTask) =>
{
result = readTask.Result;
lblMessage.Text = string.Format("{0} products were uploaded successfully. {1} failed.", result.Success, result.Failed);
});
});
Run Code Online (Sandbox Code Playgroud)
当我得到响应/结果时,我正在尝试显示某种消息.但似乎没什么用 - 我的标签没有更新.
显然,我做错了什么 - 如何在收到回复后向用户显示消息?
TIA
编辑:
如下所述,我宣布:
TaskScheduler scheduler = TaskScheduler.FromCurrentSynchronizationContext();
并传入"调度程序"(尝试使用ContinueWiths),但仍然没有任何效果.实际上,现在我的lblMessage.Text上的断点未到达.
小智 6
看起来您必须访问UI线程才能更新UI.刚刚运行ContinueWith时,你最终可以使用eny线程.解决这个问题的方法是使用传递同步上下文
TaskScheduler.FromCurrentSynchronizationContext();
正如MSDN [1]上的这篇文章中所描述的
否则你的代码看起来很好.
希望这可以帮助,
亨里克
[1] http://msdn.microsoft.com/en-us/library/dd997394.aspx
| 归档时间: |
|
| 查看次数: |
1569 次 |
| 最近记录: |