这篇文章介绍了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();
}
/// <summary>
/// 穿衣
/// </summary>
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} 秒");
}
/// <summary>
/// 刷牙
/// </summary>
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} 秒");
}
/// <summary>
/// 洗脸
/// </summary>
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();
}
/// <summary>
/// 穿衣
/// </summary>
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} 秒");
}
/// <summary>
/// 刷牙
/// </summary>
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} 秒");
}
/// <summary>
/// 洗脸
/// </summary>
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
来轻松实现并行操作. - ...
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对得得之家的支持。如果你想了解更多相关内容请查看下面相关链接
本文标题为:C#使用Task实现并行编程


基础教程推荐
- C#中 Json 序列化去掉null值的方法 2022-11-18
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- Unity shader实现高斯模糊效果 2023-01-16
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- 实例详解C#实现http不同方法的请求 2022-12-26
- C# 解析XML和反序列化的示例 2023-04-14
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- C#中的Linq to JSON操作详解 2023-06-08