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 @   AnAng  阅读(185)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示