阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

C#使用Task实现并行编程示例

86次阅读
没有评论

共计 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 秒.

    总结一下

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

  • 要省时间, 但是要多写点代码, 更耗体力.
  • 可以使用 Task 来轻松实现并行操作.
  • 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值.

    阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

    腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

    代金券:在阿里云专用满减优惠券

    正文完
    星哥玩云-微信公众号
    post-qrcode
     0
    星锅
    版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计2763字。
    转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
    【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
    阿里云-最新活动爆款每日限量供应
    评论(没有评论)
    验证码
    【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中