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;
            });
        }
相关推荐
翔云12345611 小时前
golang中使用 sort.Interface 实现复杂多级排序
开发语言·后端·golang
「QT(C++)开发工程师」11 小时前
C++设计模式
开发语言·c++·设计模式
csgo打的菜又爱玩11 小时前
数仓整体架构和建模架构
java·大数据·开发语言·架构
ん贤11 小时前
自go-zero走进微服务
开发语言·后端·golang
小菜鸡桃蛋狗11 小时前
第一次学c语言系列之——函数补充!!!
开发语言
小花11 小时前
java后端框架之spring
java·开发语言·spring
一条大祥脚11 小时前
势能分析与势能线段树
开发语言·javascript·数据结构·算法
chao18984411 小时前
基于字典缩放的属性散射中心参数提取算法与MATLAB实现
开发语言·算法·matlab
小尧嵌入式11 小时前
【Linux开发四】Linux中概念|MobaXterm和Filezilla软件使用|线程|互斥锁|读写锁
linux·运维·服务器·开发语言·数据结构
a努力。11 小时前
Spring Boot 4 全面拥抱 Jackson 3
java·运维·开发语言·spring boot·后端·spring·jenkins