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秒,然后在继续往下执行,并且程 序不会卡死