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;
            });
        }
相关推荐
季明洵7 分钟前
Java基础---逻辑控制(上)
java·开发语言·循环结构·分支结构·顺序结构
沫璃染墨11 分钟前
重生之我要手写 C++ list:从底层结构到 const 迭代器与迭代器失效全解
开发语言·c++
练习时长一年18 分钟前
xlsx文件下载异常问题
java·开发语言
secret_to_me21 分钟前
裴行俭VS袁天罡和李淳风
开发语言
2601_9534656121 分钟前
M3U8 在线播放器:无需安装,一键调试 HLS 直播流
开发语言·前端·javascript·开发工具·m3u8·m3u8在线播放
郭涤生30 分钟前
C++ 线程同步复习
开发语言·c++
Full Stack Developme31 分钟前
Hutool EnumUtil 教程
开发语言·windows·python
XMYX-034 分钟前
18 - Go 等待协程:WaitGroup 使用与坑
开发语言·golang
feifeigo12337 分钟前
基于遗传算法的矩形排样MATLAB实现
开发语言·matlab
他是龙55140 分钟前
65:JS安全&浏览器插件&工具箱等
开发语言·javascript·安全