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

C# 异步方法的使用场景

我一直认为C#的异步方法只是一堆华而不实的东西,坑特别多,比起直接自建线程也没有任何优势。
直到有一天,一个需求场景,让我再次想到了C#的异步方法。

需求场景如下:需要写一个程序控制机械臂完成各种动作。每个动作要同时控制多个关节,而关节的运动需要时间。整套流程需要紧密衔接,一个关节执行完成后另外几个关节才可以运动,一个动作要等待多个关节全部完成它自己的动作。经过思考,我最终还是选择了那个让我之前栽了大跟头的异步方法。

原因嘛,很简单:如果采用老办法直接新建线程,那意味着每执行一个关节都要建立一个线程,最终要管理无数个乱七八糟的线程。不如使用异步方法,让C#自己建立新线程自己管理,我们只需要在代码中指示不同关节任务之间的衔接方式即可。

public static void Main()
{// 开展执行某动作 需要运动两个关节Task t1 = Run1();Task t2 = Run2();Task.WaitAll(t1, t2);Console.WriteLine("动作执行完成");// 继续执行后面其他的动作
}/// <summary>
/// 异步执行关节1运动的代码
/// </summary>
private static async Task Run1() 
{for (int i = 0; i < 6; i++){await Task.Delay(1000);Console.WriteLine(i);}Console.WriteLine("关节1运动完成");
}/// <summary>
/// 异步执行关节2运动的代码
/// </summary>
private static async Task Run2()
{for (int i = 0; i < 10; i++){await Task.Delay(1000);Console.WriteLine(i);}Console.WriteLine("关节2运动完成");
}

相关文章:

C# 异步方法的使用场景

我一直认为C#的异步方法只是一堆华而不实的东西&#xff0c;坑特别多&#xff0c;比起直接自建线程也没有任何优势。 直到有一天&#xff0c;一个需求场景&#xff0c;让我再次想到了C#的异步方法。 需求场景如下&#xff1a;需要写一个程序控制机械臂完成各种动作。每个动作要…...

Lua 教程

Lua 教程 (今天又又又开新坑啦) Lua 教程 手册简介 Lua 是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放。 手册说明 Lua是什么? Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学&#xff08;Pontifical Catholic University of Rio de …...

CleanMyMac X2024版本有哪些常见的使用场景?

CleanMyMac X作为一款Mac电脑清理和优化工具&#xff0c;具有多种使用场景。以下是一些常见的使用场景&#xff1a; 清理系统垃圾文件&#xff1a;CleanMyMac X可以智能扫描Mac磁盘空间&#xff0c;清理系统冗余文件和各种软件应用产生的垃圾文件&#xff0c;如缓存、日志文件…...

《Docker快速入门:从0到1构建你的第一个容器!》

《Docker快速入门&#xff1a;从0到1构建你的第一个容器&#xff01;》 前言 欢迎来到Docker的世界&#xff0c;一个让应用程序打包、部署和运行更加容易的神奇平台。Docker改变了我们对于应用开发和分发的看法&#xff0c;它通过容器技术让软件的携带和运行变得前所未有的轻…...

NLP_Transformer架构

文章目录 Transformer架构剖析编码器-解码器架构各种注意力的应用Transformer中的自注意力Transformer中的多头自注意力Transformer中的编码器-解码器注意力Transformer中的注意力掩码和因果注意力 编码器的输入和位置编码编码器的内部结构编码器的输出和编码器-解码器的连接解…...

CVE-2012-2311 漏洞复现

CVE-2012-2311 这个漏洞被爆出来以后&#xff0c;PHP官方对其进行了修补&#xff0c;发布了新版本5.4.2及5.3.12&#xff0c;但这个修复是不完全的&#xff0c;可以被绕过&#xff0c;进而衍生出CVE-2012-2311漏洞。 PHP的修复方法是对-进行了检查&#xff1a; if(query_str…...

多线程面试题汇总

多线程面试题汇总 一、多线程1、线程的生命周期2、线程的创建&#xff08;函数创建&#xff09;3、线程的创建&#xff08;使用类&#xff09;4、守护线程 二、全局解释器锁1、使用单线程实现累加到5000000002、使用多线程实现累加到5000000003、总结 三、线程安全1、多线程之数…...

CentOS7.9+Kubernetes1.29.2+Docker25.0.3高可用集群二进制部署

CentOS7.9Kubernetes1.29.2Docker25.0.3高可用集群二进制部署 Kubernetes高可用集群&#xff08;Kubernetes1.29.2Docker25.0.3&#xff09;二进制部署二进制软件部署flannel v0.22.3网络&#xff0c;使用的etcd是版本3&#xff0c;与之前使用版本2不同。查看官方文档进行了解…...

STM32——OLED菜单(二级菜单)

文章目录 一.补充二. 二级菜单代码 简介&#xff1a;首先在我的51 I2C里面有OLED详细讲解&#xff0c;本期代码从51OLED基础上移植过来的&#xff0c;可以先看完那篇文章&#xff0c;在看这个&#xff0c;然后按键我是用的定时器扫描不会堵塞程序,可以翻开我的文章有单独的定时…...

配置Vite+React+TS项目

初始化 执行npm create vite并填写项目名、用那个框架。。 配置 路径别名 在vite.config.ts里面配置&#xff1a; import { defineConfig } from vite import react from vitejs/plugin-react import path from pathexport default defineConfig({plugins: [react()],reso…...

2.13:C语言测试题

21.(b) 6 22.(b) cd 23.b) 5 4 1 3 2 栈&#xff1a;先进后出 24. b,c,d:10,12,120 25.2,5 26.越界访问&#xff0c;可能正常输出&#xff0c;可能段错误 27. 0&#xff0c;41 28. a&#xff09;11 b) 320 29. aab; ba-b; aa-b; 30. p150x801005; p250x810…...

ubuntu22.04 有一台机器说有4T硬盘,但是df的时候看不到,怎么查找

在 Ubuntu 22.04 上&#xff0c;如果你有一块硬盘在使用df命令时未显示&#xff0c;这通常意味着硬盘尚未被挂载或者根本未被分区和格式化。以下是一些步骤来帮助你识别和准备新硬盘&#xff1a; 1. 检查硬盘是否被系统识别 首先&#xff0c;使用lsblk命令来检查系统是否识别…...

【机器学习】数据清洗之识别重复点

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之NavDestination组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之NavDestination组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、NavDestination组件 作为NavRouter组件的子组件&#xff0c;用于显示导…...

tokio tcp通信

引入crate tokio { version "1.35.1", features ["full"] } 服务端 use std::time::Duration; use tokio::{io::{AsyncBufReadExt, AsyncWriteExt},net::{tcp::{OwnedReadHalf, OwnedWriteHalf},TcpListener, TcpStream,},sync::mpsc, };#[tokio::ma…...

LCR 122. 路径加密【简单】

LCR 122. 路径加密 假定一段路径记作字符串 path&#xff0c;其中以 "." 作为分隔符。现需将路径加密&#xff0c;加密方法为将 path 中的分隔符替换为空格 " "&#xff0c;请返回加密后的字符串。 示例 1&#xff1a; 输入&#xff1a;path "a.ae…...

SpringUtils 工具类,方便在非spring管理环境中获取bean

应用场景&#xff1a; 1 可用在工具类中&#xff0c; 2 spring【Controller,service】环境中&#xff0c; 3 其中的一个方法getAopProxy可获得代理对象&#xff0c;需要将 EnableAspectJAutoProxy(exposeProxy true) 允许获取代理对象 import org.springframework.aop.framew…...

JavaWeb之请求

请求 客户端请求由ServletRequest类型的request对象表示&#xff0c;在HTTP请求场景下&#xff0c;容器提供的请求对象的具体类型为HttpServletRequest HTTP的请求消息分为三部分&#xff1a;请求行、请求头、请求正文。 请求行对应方法 // 获取请求行中的协议名和版本public S…...

VsCode中常用的正则表达式操作

在vscode中可以使用正则表达式来进行搜索内容&#xff0c;极大的方便了我们对大量数据中需要查看的信息进行筛选&#xff0c;使用正则搜索时点击 .* 此文章会持续补充常用的正则操作 1.光标选中搜索到的内容 将搜索的内容进行全选&#xff0c;举例&#xff1a;在如下文件中我需…...

ubuntu22.04@laptop OpenCV Get Started: 007_color_spaces

ubuntu22.04laptop OpenCV Get Started: 007_color_spaces 1. 源由2. 颜色空间2.1 RGB颜色空间2.2 LAB颜色空间2.3 YCrCb颜色空间2.4 HSV颜色空间 3 代码工程结构3.1 C应用Demo3.2 Python应用Demo 4. 重点分析4.1 interactive_color_detect4.2 interactive_color_segment4.3 da…...

从《西部世界》到现实:AI智能体如何重塑游戏NPC与虚拟社会?

从《西部世界》到现实&#xff1a;AI智能体如何重塑游戏NPC与虚拟社会&#xff1f; 当《西部世界》中的NPC开始拥有记忆、情感和自主决策能力时&#xff0c;观众惊叹于科幻与现实的边界正在模糊。如今&#xff0c;大型语言模型&#xff08;LLM&#xff09;驱动的AI智能体正将这…...

打造便携式Kali Linux安全评估工具:OpenClaw USB定制全攻略

1. 项目概述&#xff1a;一个便携式安全评估工具的诞生 在安全研究、渗透测试或者应急响应的现场&#xff0c;你经常会遇到一个经典困境&#xff1a;目标环境可能是一台物理隔离的机器&#xff0c;或者是一台你无法安装任何软件的“干净”主机。你需要一个功能强大、即插即用的…...

荣品RV1126 SDK编译避坑指南:从环境配置到分区调整,手把手解决常见编译错误

RV1126 SDK编译实战&#xff1a;从环境搭建到分区优化的全流程解决方案 1. 开发环境配置与初始化 RV1126开发环境的搭建是整个开发流程的第一步&#xff0c;也是后续所有工作的基础。一个稳定、高效的开发环境能够显著提升开发效率&#xff0c;减少不必要的错误。 首先需要确保…...

Go语言AI编程助手SDK:提升Cursor代码理解与生成精准度

1. 项目概述&#xff1a;一个为AI编程而生的Go语言SDK如果你是一名Go语言开发者&#xff0c;同时又在深度使用Cursor这样的AI辅助编程工具&#xff0c;那么你很可能已经感受到了一个痛点&#xff1a;如何让AI更精准、更高效地理解你的代码库&#xff0c;并在此基础上进行智能操…...

全域态势数字孪生,筑牢楼宇长效安全透明防护屏障

全域态势数字孪生&#xff0c;筑牢楼宇长效安全透明防护屏障副标题&#xff1a;全要素三维动态实时复刻楼宇实景&#xff0c;依托无感全域人员感知、多机位跨镜联动追踪、身体指纹唯一身份归档&#xff0c;异常行为、区域滞留、安全隐患提前透明预警处置一、方案概述伴随城市高…...

PowerInfer:基于热点神经元预测的LLM高性能推理引擎部署指南

1. 项目概述&#xff1a;当推理速度成为AI落地的瓶颈最近在折腾本地大模型推理的朋友&#xff0c;估计都绕不开一个核心痛点&#xff1a;速度。模型效果再好&#xff0c;生成一句话要等上十几秒&#xff0c;那种“卡顿感”足以劝退绝大多数想把它集成到实际应用里的开发者。我自…...

基于Claude API构建AI代码生成工具:从API封装到工程化实践

1. 项目概述与核心价值最近在开发者社区里&#xff0c;一个名为ashish200729/claude-code-source-code的项目标题引起了不小的讨论。乍一看&#xff0c;这个标题很容易让人产生误解&#xff0c;以为这是某个知名AI模型的源代码被公开了。但作为一名在软件开发和开源领域摸爬滚打…...

人性最残忍的真相是:你越不把自己当回事,别人就越不把你当回事

那个总给别人买贵东西的人,最后都怎么样了? 目录 那个总给别人买贵东西的人,最后都怎么样了? 我们为什么会忍不住过度付出? 真正的爱,从来都不是单方面的牺牲 爱自己,是所有健康关系的前提 昨天刷到一句话,瞬间戳中了我:“永远不要拿自己辛苦钱,去给别人买自己都舍不…...

CN2628 可用太阳能供电 5 伏特低压差电压调制集成电路

概述: CN2628是一款可用太阳能供电的低噪声线性电压调制集成电路&#xff0c;采用固定5.0V输出电压&#xff0c;最大 输出电流可达1安培&#xff0c;在5.5V到7V的输入电压范围内输出电压精度可达1%。CN2628工作电流只有520微安&#xff0c;而且同输入和输出的压差没有关系。 CN…...

Windows上运行Swift代码的三种实战路径

1. 为什么Windows开发者需要Swift&#xff1f; Swift作为苹果生态的主力编程语言&#xff0c;近年来在服务端开发、机器学习等领域的应用越来越广泛。但很多刚接触Swift的Windows开发者会发现&#xff1a;官方文档里压根没提Windows支持&#xff01;这其实是因为Swift最初就是…...