杭州建站网站建设,网站建设需要会代码吗,网站什么时候恢复彩色,怎样在百度答题赚钱我一直认为C#的异步方法只是一堆华而不实的东西#xff0c;坑特别多#xff0c;比起直接自建线程也没有任何优势。 直到有一天#xff0c;一个需求场景#xff0c;让我再次想到了C#的异步方法。
需求场景如下#xff1a;需要写一个程序控制机械臂完成各种动作。每个动作要…我一直认为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运动完成);
}