C#异步延迟Task.Delay()的使用

一、要在异步方法中需要延迟代码继续往下执行可以使用await Task.Delay(),效果类似Thread.Sleep()。

两者之间的不同是

1、await Task.Delay实质创建一个运行给定时间的任务,不会引起程序卡死。Thread.Sleep使当前线程休眠给定时间,会引起来程序卡死

2、Task.Delay() 比 Thread.Sleep() 消耗更多的资源,但是Task.Delay()可用于为方法返回Task类型;或者根据CancellationToken取消标记动态取消等待

二、代码示例:

private async void button1_Click(object sender, EventArgs e)
        {
            using(HttpClient httpClient = new HttpClient())
            {
                string html = await httpClient.GetStringAsync("https://baidu.com/");
                textBox1.Text = html.Substring(0, 200);
                await Task.Delay(3000);

                string html2 = await httpClient.GetStringAsync("https://www.cnblogs.com/");
                textBox1.Text = html.Substring(0, 50);

            }
        }

运行到await Task.Delay(3000); 程 序会停止3秒,然后在继续往下执行,并且程 序不会卡死

 

posted @ 2023-01-25 20:15  ziff123  阅读(4934)  评论(0编辑  收藏  举报