C# sleep和Dely的区别
1、区别
Thread.Sleep() 阻塞主线程
Task.Dely() 等待线程,不阻塞主线程,与ContinueWith()一起使用,时间到了,调用ContinueWith()里面的方法
2、区别代码
{ Stopwatch stopwatch = new Stopwatch(); Task.Run(() => { stopwatch.Start(); // 阻塞主线程 Thread.Sleep(1000 * 3); stopwatch.Stop(); Console.WriteLine($"sleep结束,线程:{Thread.CurrentThread.ManagedThreadId.ToString("00")},耗时:{stopwatch.ElapsedMilliseconds}"); }); } { Stopwatch stopwatch = new Stopwatch(); Task.Run(() => { stopwatch.Start(); // 等待线程,不阻塞主线程 Task.Delay(1000 * 3); stopwatch.Stop(); Console.WriteLine($"dely结束,线程:{Thread.CurrentThread.ManagedThreadId.ToString("00")},耗时:{stopwatch.ElapsedMilliseconds}"); }); }
3、使用Dely
Stopwatch stopwatch = new Stopwatch(); Task.Run(() => { stopwatch.Start(); // 不阻塞主线程,等待线程,等待完成后,执行 ContinueWith 里面的方法 Task.Delay(1000 * 3).ContinueWith(_ =>{ stopwatch.Stop(); Console.WriteLine($"Dely结束,当前线程:{Thread.CurrentThread.ManagedThreadId.ToString("00")},执行时间:{stopwatch.ElapsedMilliseconds}"); }); });

浙公网安备 33010602011771号