异步方法未运行

时间:2017-07-28 08:39:11

标签: c# visual-studio asynchronous async-await

我试图了解async-await方法,但我真的没有掌握它。我之前使用的是WebRequest,它非常简单但很遗憾是同步的。

我的问题是StartTest()没有运行 - "因为没有等待这个调用,所以当前方法的执行在调用完成之前继续。考虑应用“等待”#39;运营商对电话的结果'。我不能在父方法为Main之前添加await,它当然不能是异步方法。我意识到我对异步的理解是可怕的 - 有人能以正确的方式指出我吗?

static void Main(string[] args)
    {
        StartTest();

        async Task<string> StartTest()
        {
            using (var client = new HttpClient())
            {
                List<string> urls = new List<string> { //a list of urls i want to check };

                if (await GetStatusCodes(urls) != true)
                {
                    return "NOT OK";
                }
            }

            return "OK";

        }


        async Task<bool> GetStatusCodes(IList<string> urls)
        {
            using (var client = new HttpClient())
            {
                foreach (var url in urls)
                {
                    var response = await client.GetAsync(url);
                    if (response.StatusCode.ToString() != "OK")
                    {
                        return false;
                    }
                }

                return true;
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以将MainAsync方法放入要运行异步的内容中。

e.g。

SELECT * WHERE parent_id = id