C#中async与await

本文通过两个按钮点击事件的处理程序,演示了异步和同步任务执行的区别。在异步模式下,任务开始后立即返回,后续任务在主线程上继续执行,而耗时操作在后台线程上完成。在同步模式下,所有任务按顺序执行,耗时操作会阻塞主线程,直到操作完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Trace.WriteLine("Task Start !");
            DOTaskWithAsync();
            Trace.WriteLine("Task End !");
            Trace.WriteLine("----------------");
        }

        public static async void DOTaskWithAsync()
        {

            Trace.WriteLine("Await Taskfunction Start");
            await Task.Run(() => {
                Dotaskfunction();
            });
        }

        public static void Dotaskfunction()
        {
            for (int i = 0; i <= 50; i++)
            {

                Trace.WriteLine(string.Format("task {0}  has been done!", i));
            }

        }

结果是异步的,结果如下:

Task Start !
Await Taskfunction Start
task 0  has been done!
task 1  has been done!
Task End !
----------------
task 2  has been done!
task 3  has been done!
task 4  has been done!
task 5  has been done!
task 6  has been done!
task 7  has been done!
task 8  has been done!
task 9  has been done!
......

 

 

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            Trace.WriteLine("Task Start !");
            await DOTaskWithAsync();
            Trace.WriteLine("Task End !");
            Trace.WriteLine("----------------");
        }

        public static async Task DOTaskWithAsync()
        {

            Trace.WriteLine("Await Taskfunction Start");
            await Task.Run(() => {
                Dotaskfunction();
            });
        }

        public static void Dotaskfunction()
        {
            for (int i = 0; i <= 50; i++)
            {

                Trace.WriteLine(string.Format("task {0}  has been done!", i));
            }

        }

结果是同步的,结果如下:

Task Start !
Await Taskfunction Start
task 0  has been done!
task 1  has been done!
task 2  has been done!
task 3  has been done!
task 4  has been done!
......
task 45  has been done!
task 46  has been done!
task 47  has been done!
task 48  has been done!
task 49  has been done!
task 50  has been done!
Task End !
----------------

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值