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;
            });
        }
相关推荐
信也科技布道师1 分钟前
基石Redis实例自动化调度之路
java·开发语言·redis·自动化
666HZ66616 分钟前
程序设计竞赛java
java·开发语言
开发者小天17 分钟前
python查询天气小示例
开发语言·python
知行合一。。。18 分钟前
Python--04--数据容器(元组)
开发语言·python
wasp52022 分钟前
Hudi 客户端实现分析
java·开发语言·人工智能·hudi
啊阿狸不会拉杆26 分钟前
《计算机操作系统》 第十一章 -多媒体操作系统
开发语言·c++·人工智能·os·计算机操作系统
独自破碎E26 分钟前
【滑动窗口】最长无重复子数组
java·开发语言
木井巳27 分钟前
【Java】数据类型及运算符重点总结
java·开发语言
码农水水27 分钟前
美团Java面试被问:Netty的ByteBuf引用计数和内存释放
java·开发语言·数据库·mysql·算法·面试·职场和发展