C#使用Task实现并行编程

这篇文章介绍了C#使用Task实现并行编程的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

故事背景

透着纱的窗外的阳光, 又是一个星期一.

慢慢来

一看时间, 还早, 那么蹦跶起来

  • 穿衣
  • 刷牙
  • 洗脸

用代码来说的话, 应该是这样:

// Program.cs using System; using System.Diagnostics; using System.Threading; namespace ConsoleApp1 { class Program { static void Main(string[] args) { Console.WriteLine("早起三件事开始..."); Stopwatch sw = new Stopwatch(); sw.Start(); Dress(); BrushTeeth(); WashFace(); sw.Stop(); Console.WriteLine($"...早起三件事完成, 总耗时 {sw.Elapsed.Seconds} 秒"); Console.ReadKey(); } ///  /// 穿衣 ///  static void Dress() { Console.WriteLine($"穿衣开始..."); Stopwatch sw = new Stopwatch(); sw.Start(); Thread.Sleep(timeout: TimeSpan.FromSeconds(value: 1)); sw.Stop(); Console.WriteLine($"...穿衣完成, 耗时 {sw.Elapsed.Seconds} 秒"); } ///  /// 刷牙 ///  static void BrushTeeth() { Console.WriteLine($"刷牙开始..."); Stopwatch sw = new Stopwatch(); sw.Start(); Thread.Sleep(timeout: TimeSpan.FromSeconds(value: 3)); sw.Stop(); Console.WriteLine($"...刷牙完成, 耗时 {sw.Elapsed.Seconds} 秒"); } ///  /// 洗脸 ///  static void WashFace() { Console.WriteLine($"洗脸开始..."); Stopwatch sw = new Stopwatch(); sw.Start(); Thread.Sleep(timeout: TimeSpan.FromSeconds(value: 5)); sw.Stop(); Console.WriteLine($"...系列完成, 耗时 {sw.Elapsed.Seconds} 秒"); } } }

运行之后, 等待一会, 会看到如下输出:

早起三件事开始...
穿衣开始...
...穿衣完成, 耗时 1 秒
刷牙开始...
...刷牙完成, 耗时 3 秒
洗脸开始...
...系列完成, 耗时 5 秒
...早起三件事完成, 总耗时 9 秒

一件一件事慢慢来, 总耗时 9 秒...

赶时间

一看时间, 哎呦我去, 快迟到了, 穿衣 & 刷牙 & 洗脸一起来吧...别问我现实中怎么实现的

总而言之代码是这样滴:

// Program.cs using System; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { static void Main(string[] args) { Console.WriteLine("早起三件事开始..."); Stopwatch sw = new Stopwatch(); sw.Start(); Task dressTask = Task.Factory.StartNew(action: Dress); Task brushTeethTask = Task.Factory.StartNew(action: BrushTeeth); Task washFaceTask = Task.Factory.StartNew(action: WashFace); Task.WaitAll(dressTask, brushTeethTask, washFaceTask); sw.Stop(); Console.WriteLine($"...早起三件事完成, 总耗时 {sw.Elapsed.Seconds} 秒"); Console.ReadKey(); } ///  /// 穿衣 ///  static void Dress() { Console.WriteLine($"穿衣开始..."); Stopwatch sw = new Stopwatch(); sw.Start(); Thread.Sleep(timeout: TimeSpan.FromSeconds(value: 1)); sw.Stop(); Console.WriteLine($"...穿衣完成, 耗时 {sw.Elapsed.Seconds} 秒"); } ///  /// 刷牙 ///  static void BrushTeeth() { Console.WriteLine($"刷牙开始..."); Stopwatch sw = new Stopwatch(); sw.Start(); Thread.Sleep(timeout: TimeSpan.FromSeconds(value: 3)); sw.Stop(); Console.WriteLine($"...刷牙完成, 耗时 {sw.Elapsed.Seconds} 秒"); } ///  /// 洗脸 ///  static void WashFace() { Console.WriteLine($"洗脸开始..."); Stopwatch sw = new Stopwatch(); sw.Start(); Thread.Sleep(timeout: TimeSpan.FromSeconds(value: 5)); sw.Stop(); Console.WriteLine($"...系列完成, 耗时 {sw.Elapsed.Seconds} 秒"); } } }

启动运行之后, 等待一会, 你应该会看到如下输出:

早起三件事开始...
刷牙开始...
洗脸开始...
穿衣开始...
...穿衣完成, 耗时 1 秒
...刷牙完成, 耗时 3 秒
...系列完成, 耗时 5 秒
...早起三件事完成, 总耗时 5 秒

可以看到, 几件事一起干了, 总耗时只用了 5 秒.

总结一下

几件事一起干(并行), 比一件一件事慢慢来

  • 要省时间, 但是要多写点代码, 更耗体力.
  • 可以使用 Task 来轻松实现并行操作.
  • ...

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对0133技术站的支持。如果你想了解更多相关内容请查看下面相关链接

以上就是C#使用Task实现并行编程的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 其他教程