c# Thread.Sleep与Task.Delay 区别
来源:互联网 发布:php websocket作用 编辑:程序博客网 时间:2024/06/04 23:19
1、Thread.Sleep 是同步延迟, Task.Delay异步延迟。
2、Thread.Sleep 会阻塞线程,Task.Delay不会。
Task.Factory.StartNew(delegate
{
for(int i=1;i<50;i++)
{
System.Diagnostics.Debug.WriteLine(i.ToString());
Thread.Sleep(100);
}
});
Task.Factory.StartNew(delegate
{
for (int i = 101; i < 150; i++)
{
System.Diagnostics.Debug.WriteLine(i.ToString());
Task.Delay(100);
}
});
虽然此处delay的用法有待商榷,但确实不会阻塞
3、Thread.Sleep不能取消,Task.Delay可以。
引用别人的例子
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ThreadSleepTaskDelayDemo
{
public partial class Form1 : Form
{
CancellationTokenSource tokenSource = new CancellationTokenSource();
public Form1()
{
InitializeComponent();
}
private void btnThreadSleep_Click(object sender, EventArgs e)
{
PutThreadSleep();
MessageBox.Show("I am back");
}
private async void btnTaskDelay_Click(object sender, EventArgs e)
{
await PutTaskDelay();
MessageBox.Show("I am back");
}
void PutThreadSleep()
{
Thread.Sleep(5000);
}
async Task PutTaskDelay()
{
try
{
await Task.Delay(5000, tokenSource.Token);
}
catch (TaskCanceledException ex)
{
}
catch (Exception ex)
{
}
}
private void btnCancelTaskDelay_Click(object sender, EventArgs e)
{
tokenSource.Cancel();
}
}
}
- c# Thread.Sleep与Task.Delay 区别
- Thread.Sleep(1000) 、Task.Delay(1000).Wait() 区别
- Thread.Sleep(1000) 、Task.Delay(1000).Wait() 区别
- Thread.yield() 与 Thread.sleep()的区别
- 延时函数delay与sleep有什么区别呢?
- thread.sleep(0)与thread.sleep(1)的区别
- thread.sleep 与 implicitlywait 的区别
- SystemClock.sleep()方法与Thread.sleep()方法的区别
- SystemClock.sleep()方法与Thread.sleep()方法的区别
- Thread.sleep()与Thread.yield()的区别与联系
- sleep,wait,delay函数的区别
- 延时函数sleep和delay的区别
- C#中Thread.sleep()
- C# 理解Thread.Sleep()
- Thread.sleep()和Thread.currentThread().sleep()区别
- Thread.sleep()和Thread.currentThread().sleep()区别
- Thread.sleep()和Thread.currentThread().sleep()区别
- Thread.sleep 与Thread.currentThread.sleep
- GOLANG空指针崩溃时堆栈消失和解决方案
- listview全选反选等
- 小数与分数之间相互转化
- 多元线性回归模型和最小二乘法
- 不可滑动ListView、GridView
- c# Thread.Sleep与Task.Delay 区别
- 响应式布局总结
- Django的中间件
- 音频混音的算法实现
- 内核模块化编程的细节
- 34.Button控件(按钮,用于程序和用户的交互)
- Spring 上传文件
- SQL SERVER几种数据迁移/导出导入的实践
- angular4 项目启动报错