Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api HttpClient ReadAsAsync-完成后执行某些操作_Asp.net Web Api_Dotnet Httpclient - Fatal编程技术网

Asp.net web api HttpClient ReadAsAsync-完成后执行某些操作

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

我有从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);
                                                            });
                    });
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]

请看一下这个问题好吗:请看一下这个问题好吗