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

C# async await 测试一

using System.Threading.Tasks;namespace awaitTest2
{internal class Program{static async Task Main(string[] args){Console.WriteLine("主线程开始!主线程ID:"+Thread.CurrentThread.ManagedThreadId);F1();   // 这里没有await,F1()会在一个独立的线程中运行,主线程不会等待它完成//遇到await时,F1()会将控制权返回给调用它的线程(即主线程)//await F1(); // 这里有await,主线程会等待F1()完成后再继续执行Console.WriteLine("主线程结束!");Console.ReadLine();  // 防止主线程结束,观察子线程输出}public static async Task F1(){Task task = Task.Run(() =>{Console.WriteLine("子线程开始:" + Thread.CurrentThread.ManagedThreadId);Thread.Sleep(3000);Console.WriteLine("子线程结束");});await task;Console.WriteLine("后续线程:" + Thread.CurrentThread.ManagedThreadId);}}
}

通过F1()直接调用的结果:

image

 

如果主线程即Main方法中不含Console.ReadLine();那么执行结果如下:主线程不会等到子线程结束就关闭了程序。(前台线程结束后,所有的后台线程也会被结束)

image

 

 

通过await F1()调用的结果:

 

image

 

http://www.hskmm.com/?act=detail&tid=26754

相关文章:

  • 2025 年快速卷帘门厂家最新推荐排行榜:聚焦智能定制与高效供货,精选实力厂家助您精准选购
  • 实验课1
  • 课后作业1
  • 详细介绍:Windows如何定制键盘按键
  • 深入解析:Oracle、PostgreSQL 与 MySQL 数据库对比分析与实践指南
  • TheHackersLabs Templo writeup
  • PCIe扫盲——链路初始化与训练基础(三)之LTSSM
  • #attrs
  • 国庆比赛总结
  • 记录第一个博客
  • PCIe扫盲——链路初始化与训练基础(二)
  • 2025 年 ppt 素材模板 /ppt 模板 ai 生成 /ppt 模板制作 /ppt 模版 / 课件 PPT 模板工具推荐:iSlide 技术优势与全场景服务能力解析
  • 10.8
  • 课后作业1(01-方法)
  • VMware ESXi 9.0 macOS Unlocker OEM BIOS 2.7 NVMe 驱动特殊定制版
  • 项目案例作业2
  • VMware ESXi 9.0 macOS Unlocker OEM BIOS 2.7 H3C 新华三 定制版
  • VMware ESXi 9.0 macOS Unlocker OEM BIOS 2.7 Inspur 浪潮 定制版
  • 上手 Rokid JSAR:新手也能快速入门的 AR 开发之旅
  • 2025 年氨基酸水溶肥厂家最新推荐榜单:聚焦花芽分化膨果上色需求,精选优质企业助农户科学选购花芽分化/膨果上色/促花稳果/低温酶解氨基酸水溶肥厂家推荐
  • VMware ESXi 8.0U3g macOS Unlocker OEM BIOS 2.7 H3C 新华三 定制版
  • 2025 年最新防火涂料厂家排行榜:钢结构各类防火涂料优质厂家最新推荐,助力建筑安全选型 钢结构/水性/隧道/环保/饰面型防火涂料厂家推荐
  • 嵌入式固件升级框架详解与实战经验
  • 2025 年家用电梯最新推荐排行榜:精选技术领先、服务优质的实力品牌,助您精准选购
  • helm 模板的基础使用
  • 20251008J赛合订本
  • [计算机组成] 计算机字体文件及其运行原理
  • 后量子密码技术延迟随数据量增加而降低
  • 2025 南昌装修公司最新推荐榜单:权威解析本土标杆与新锐品牌,助力品质家装决策南昌装修设计 / 南昌装修设计师公司推荐
  • 1000th post Problem 1