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

C#异步1

一、异步编程的概念

在传统的同步编程中,代码是按照顺序依次执行的。例如,当一个方法执行一个长时间的操作(如网络请求、读取大型文件)时,程序会阻塞在这个操作上,直到操作完成才能继续执行后续的代码。而异步编程则允许程序在执行一个长时间操作时,不必等待该操作完成就可以继续执行其他任务。

就好比在餐厅里,同步是你亲自去厨房等待厨师为你做菜,只有拿到菜才能做下一件事;异步则是你点完菜后,服务员给你一个取餐器,你可以先找座位、聊天等,等餐做好取餐器提醒你再去取餐。

二、C# 中的异步模式 - 基于任务(Task)的异步编程(TAP)

Task 和 Task<TResult>类型

Task 类型:代表一个异步操作,没有返回值。例如,一个简单的异步日志记录方法可以返回Task。假设我们有一个记录日志到服务器的方法:

public async Task LogToServerAsync()
{
    // 假设这是一个网络操作,用于将日志发送到服务器
    await SomeNetworkOperation();
}

async 和 await 关键字

async 关键字:用于修饰方法,表示这个方法是异步方法。它主要是告诉编译器这个方法内部可能会有await操作,并且这个方法会被编译成一个状态机来管理异步操作。例如:

public async Task<int> CalculateAsync()
{
    int result = await LongRunningCalculation();
    return result;
}

await 关键字:是异步编程的关键部分。当遇到await时,它会暂停当前异步方法的执行,直到等待的任务(TaskTask<TResult>)完成。在暂停期间,执行权会交回给调用者,当任务完成后,方法会从暂停的地方继续执行。例如,在上面的CalculateAsync方法中,当执行到await LongRunningCalculation()时,方法会暂停,直到LongRunningCalculation这个任务完成,然后获取结果并继续执行后续代码。

C#练习27


http://www.kler.cn/a/453430.html

相关文章:

  • 【深度学习-调参】Batch 大小与类别数到底有没有潜在的关系?
  • Java包装类型的缓存
  • springboot/ssm网上宠物店系统Java代码编写web宠物用品商城项目
  • 43. Three.js案例-绘制100个立方体
  • Unity3D Huatuo技术原理剖析详解
  • stm32基础(keil创建、Proteus仿真、点亮LED灯,7段数码管)
  • 蚂蚁集团 CTO 线大规模调整、多个 AI 业务部门被合并
  • 工业大数据分析算法实战-day16
  • 天池工业蒸汽量预测教程
  • FTT变换Matlab代码解释及应用场景
  • go window安装protoc protoc生成protobuf文件
  • vue关闭eslint校验及开启debugger
  • 【jenkins插件】
  • Java 集合使用注意事项总结
  • PYNQ2.7镜像直接升级成3.0以支持XCV(Xilinx Virtual Cable)
  • 代码随想录-笔记-其八
  • Jenkins 任意文件读取(CVE-2024-23897)修复及复现
  • 【Vue3学习】使用ref调用子组件的方法,实现子组件的显示与隐藏
  • HarmonyOS NEXT 实战之元服务:静态案例效果---歌单推荐
  • 如何在 Linux 上使用 Rsync 同步本地和远程目录
  • 机器学习之pandas
  • 多功能jquery图片预览放大镜插件
  • 【C++动态规划】1105. 填充书架|2104
  • Unity功能模块一对话系统(1)前置准备
  • 08-排序
  • 题目解析与Python实现:D. Lizards and Basements 2