Asp.net web api HttpClient ReadAsAsync-完成后执行某些操作
我有从ASP.NET Web API读取响应的代码,如下所示:Asp.net web api HttpClient ReadAsAsync-完成后执行某些操作,asp.net-web-api,dotnet-httpclient,Asp.net Web Api,Dotnet Httpclient,我有从ASP.NET Web API读取响应的代码,如下所示: HttpClient client = new HttpClient(); client.GetAsync(path.ToAbsoluteUrl()).ContinueWith( (requestTask) => { HttpResponseMessage response = requestTask
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);
});
});
HttpClient=newhttpclient();
client.GetAsync(path.toabsolutionUrl()).ContinueWith(
(请求任务)=>
{
HttpResponseMessageResponse=requestTask.Result;
response.EnsureSuccessStatusCode();
response.Content.ReadAsAsync().ContinueWith(
(readTask)=>
{
result=readTask.result;
lblMessage.Text=string.Format(“{0}个产品已成功上载。{1}失败。”,result.Success,result.failed);
});
});
当我得到回复/结果时,我正试图显示某种消息。不过,似乎什么都没用——我的标签没有更新
显然,我做错了什么-在收到响应后,如何向用户显示消息
短暂性脑缺血发作
编辑:
如下文所述,我宣布:
TaskScheduler=TaskScheduler.FromCurrentSynchronizationContext()
并传入“scheduler”(尝试使用两个continueWith),但仍然没有任何效果。实际上,现在我在lblMessage.Text上的断点。。。无法访问。看起来您必须访问UI线程才能更新UI。当只是继续运行时,您可以结束在eny线程上。解决这个问题的方法是使用 TaskScheduler.FromCurrentSynchronizationContext() 正如本文在MSDN[1]上所述 否则,您的代码看起来很好 希望这有帮助 亨里克
[1] 看起来您必须进入UI线程才能更新UI。当只是继续运行时,您可以结束在eny线程上。解决这个问题的方法是使用 TaskScheduler.FromCurrentSynchronizationContext() 正如本文在MSDN[1]上所述 否则,您的代码看起来很好 希望这有帮助 亨里克
[1] 请看一下这个问题好吗:请看一下这个问题好吗