C# async-await循环依赖梳理

C#的async声明的函数内可以使用await,await的函数又需要async声明的函数,感觉两者互为对方的前提条件,是个死循环。

常见demo实现方式:

1、winform或wpf控件事件加上async

2、Task.Run内的委托函数声明为async可以在内部使用await(结合第1条,委托可以接受async函数,也可接受无async的函数)

cs 复制代码
        private void button14_Click(object sender, EventArgs e)
        {
            var t = Task.Factory.StartNew(async () =>
            {
                var v = await AsyncTest();
                Debug.WriteLine($"{v}");
                var v2 = await AsyncTest();
                Debug.WriteLine($"{v}-{v2}");
                var v3 = await AsyncTest();
                Debug.WriteLine($"{v}-{v2}-{v3}");
                return v + v2 + v3;
                //Thread.Sleep(5000);
            });
            //var res = t.GetAwaiter().GetResult();  //Task内委托为async类型,已无法使用GetAwaiter阻塞住异步过程
            //Debug.WriteLine($"{res}");
        }

        private async Task<int> AsyncTest()
        {
            return await Task.Factory.StartNew(() =>
            {
                Thread.Sleep(3000);
                return 1;
            });
        }
相关推荐
xuxie991 小时前
N11 ARM-irq
java·开发语言
唐青枫1 小时前
C#.NET ReaderWriterLockSlim 深入解析:读写锁原理、升级锁与使用边界
c#·.net
wefly20172 小时前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8
luanma1509802 小时前
PHP vs C++:编程语言终极对决
开发语言·c++·php
寂静or沉默2 小时前
2026最新Java岗位从P5-P7的成长面试进阶资源分享!
java·开发语言·面试
kyriewen113 小时前
给浏览器画个圈:CSS contain 如何让页面从“卡成PPT”变“丝滑如德芙”
开发语言·前端·javascript·css·chrome·typescript·ecmascript
娇娇yyyyyy3 小时前
QT编程(18): Qt QItemSelectionModel介绍
开发语言·qt
豆豆的java之旅4 小时前
软考中级软件设计师 数据结构详细知识点(含真题+练习题,可直接复习)
java·开发语言·数据结构
sthnyph4 小时前
QT开发:事件循环与处理机制的概念和流程概括性总结
开发语言·qt
大尚来也4 小时前
Java 反射:从“动态魔法”到生产实战的避坑指南
开发语言