C#控制台应用程序-发出http请求并等待其完成,然后再继续

问题描述 投票:0回答:1

我可能只是在做一些愚蠢的事情,但是我花了很长时间试图使这段代码起作用。我正在从数据库中读取内容,然后遍历查询结果,并对每个结果发出一个http请求。在我请求的url中,我正在执行一些可能耗时的任务,并且我希望while循环要等到http请求完成后才能继续循环并调用下一个。这是我到目前为止的内容,但它不是在等待请求完成。我知道不是因为我在url中打了3秒钟的睡眠...所以我应该看到我的应用程序输出中反映出的暂停。

using (SqlDataReader reader = dbCommand.ExecuteReader()) {
                            while (reader.Read()) {
                                Console.WriteLine("call http");
                                var result = executeReport(getRequestUrl(reader["report_id"].ToString()));
                                result.Wait();
                                Console.WriteLine("finish http");
                            }
                        }

static async Task executeReport(string requestUrl) {
            WebResponse response = await WebRequest
                .Create(requestUrl)
                .GetResponseAsync()
                .ConfigureAwait(false);            
        }
c# httpwebrequest webrequest
1个回答
0
投票

如果要等待异步操作返回以继续执行代码,则应通过非异步GetResponse()函数在同一线程上运行它。

这是关于该主题的一些基本读物:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/

© www.soinside.com 2019 - 2024. All rights reserved.