Task 的一些个人见解

Task确实比较好用且优雅 我感觉.NET要成为艺术家...

 

public class TheTask {
        /// <summary>
        /// 直接调用是同步方法
        /// </summary>
        /// <returns></returns>
        public Task Tasktest()
        {
            Task ta = Task.Run(() => { Loading(); });
            Console.WriteLine("Task函数完成");

            return ta;

        }
        /// <summary>
        /// 直接调用时异步方法
        /// </summary>
        /// <returns></returns>
        public async Task Taskasync() {
            await Task.Run(() => { Loading(); });
            Console.WriteLine("Task函数完成");
        }

        private void Loading() {
            Thread.Sleep(1000);
            Console.WriteLine("耗时操作完成");
        }

    }

 

   static void Main(string[] args) {
            //Task 测试
            //结论 await表示同步
            //不加await表示异步 
            //Over 加了wait表示主动同步
            TheTask ta = new TheTask();
            ta.Taskasync().Wait();
            Console.WriteLine("主函数完成");
             Console.Read();
}

 效果

 

另一种

  static void Main(string[] args) {
          
            TheTask ta = new TheTask();
            //ta.Taskasync().Wait();

            //主动异步
            LoadTest();  
            Console.WriteLine("主函数完成");
            Console.Read();



        }
  static async void LoadTest() {
            TheTask ta = new TheTask();
            await ta.Tasktest();
           
        }

 

结果:

 

 如果用Task 还是异步,由主函数决定是否异步好用

也就是

ta.Taskasync().Wait();

加wait表示同步 不加表示异步
就是那个绿色的下划线让我感觉难受


另一种是直接调用表示同步 要重写一个方法才能异步
posted @ 2018-04-13 16:17  AnAng  阅读(184)  评论(0编辑  收藏  举报