2ShouldContinueNotWait

Posted zhuwansu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2ShouldContinueNotWait相关的知识,希望对你有一定的参考价值。

1、线程自旋:在阻塞线程的时候为了等待解锁(访问临界资源)(Sleep)。

2、上下文切换:将处理器当前线程的状态保存到操作系统内部的线程对象中,然后再挑出一个就绪的线程,把上下文信息传递给处理器,然后执行这个线程。

 

using System.Threading.Tasks;

namespace ShouldCode

    public sealed class ShouldContinueNotWait
    
        public Task ShouldContinue()
        
            var task = Task.Run(() =>
             
                 System.Console.WriteLine("任务1完成!");
             );
            //尽量使用 ContinueWith 处理后续任务
            task.ContinueWith(t => System.Console.WriteLine("任务1后续任务1完成!"))
                .ContinueWith(t => System.Console.WriteLine("任务1后续任务1的后续任务完成!"));
            task.ContinueWith(t => System.Console.WriteLine("任务1后续任务2完成!"));
            return task;
        

        public Task NotWait()
        
            var task = Task.Run(() =>
            
                System.Console.WriteLine("任务1完成!");
            );
            task.Wait();
            System.Console.WriteLine("任务1后续任务完成!");
            return task;
        

        public async Task ShouldAwait()
        
            var task = Task.Run(() =>
            
                System.Console.WriteLine("任务1完成!");
            );
            await task;
            //此语法糖基于 continuewith  实现,和 ShouldContinue 相同
            System.Console.WriteLine("任务1后续任务完成!");
        

        public async Task NotWaitAsync()
        
            var task = Task.Run(() =>
            
                System.Console.WriteLine("任务1完成!");
            );
            //异步方法中不要同步等待
            //task.Wait();尽量不要使用。
            task.Wait();
            await Task.Run(() =>
            
                System.Console.WriteLine("任务2完成!");
            );
        
    

 

以上是关于2ShouldContinueNotWait的主要内容,如果未能解决你的问题,请参考以下文章