共计 2763 个字符,预计需要花费 7 分钟才能阅读完成。
导读 | 这篇文章介绍了 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 秒.
总结一下
几件事一起干 (并行), 比一件一件事慢慢来
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值.
正文完
星哥玩云-微信公众号