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}");
    });
});

 

posted @ 2025-07-03 19:47  市丸银  阅读(15)  评论(0)    收藏  举报