当前位置: 首页 > news >正文

C# async-await循环依赖梳理

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

常见demo实现方式:

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

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

        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;});}


http://www.mrgr.cn/news/59168.html

相关文章:

  • STMicroelectronics意法半导体车规芯片系列--亿配芯城(ICgoodFind)
  • 第23周Java主流框架入门-SpringMVC 2.RESTful开发风格
  • 智驭4A安全运维审计系统
  • 保研考研机试攻略:python笔记(1)
  • linux网络编程5——Posix API和网络协议栈,使用TCP实现P2P通信
  • 万字图文实战:从0到1构建 UniApp + Vue3 + TypeScript 移动端跨平台开源脚手架
  • 第四期书生大模型实战营(【入门岛】- 第2关 | Python 基础知识 )
  • 【Linux】SQLite 数据库安装教程(Ubuntu 22.04)
  • Linux之web服务器
  • 快捷键记忆
  • 变频器启动、停止、正/反转控制电路原理详解
  • Leecode热题100-287.寻找重复数
  • 实测体验Claude 3.5升级版:AI首次实现直接操控电脑!
  • Pyside6 布局管理器(3)--- QGridLayout的使用
  • Python使用unrar遇到的问题及解决
  • API网关的作用--为什么微服务需要一个API网关?
  • 计算机网络中网络层发送报文时IP地址的变化,交换器的广播功能及相关设备功能
  • 【Nas】X-DOC:Mac mini Docker部署中国特供版Jellyfin
  • Ubuntu24.04配置samba共享
  • ubuntu22.04安装qemu-9.1并在i.MX6上运行linux kernel 6.11
  • 【创业】互联网行业30年发展史与风口,后双创时代杀出重围的独角兽们(追求极致,务实敢为)
  • SpringCloud Gateway路由核心原理解析
  • 深入理解Python异常处理机制
  • IDEA如何将一个分支的代码合并到另一个分支(当前分支)
  • GCN+BiLSTM多特征输入时间序列预测(Pytorch)
  • 使用Python的DrissonPage库自动化爬取美女图片