加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C# -- 使用 Task 执行多线程任务

发布时间:2020-12-15 04:45:22 所属栏目:百科 来源:网络整理
导读:C# -- 使用 Task 执行多线程任务 1. 使用 Task 执行多线程任务 Main( = Task(() => = result = SumNumbers( Task task2 /span= span style="color: #0000ff"gt;new/span Task(() =span style="color: #000000"gt; { Console.WriteLine(/spanspan style="colo

C# -- 使用 Task 执行多线程任务

1. 使用 Task 执行多线程任务

Main(= Task(() =>= result = SumNumbers( Task task2 </span>= <span style="color: #0000ff"&gt;new</span> Task(() =><span style="color: #000000"&gt; { Console.WriteLine(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;线程ID:{0},Thread.CurrentThread.ManagedThreadId); Stopwatch stw </span>= <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; Stopwatch(); stw.Start(); </span><span style="color: #0000ff"&gt;long</span> result = SumNumbers(<span style="color: #800080"&gt;20000000</span><span style="color: #000000"&gt;); stw.Stop(); Console.WriteLine(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;线程ID:{0},stw.ElapsedMilliseconds); }); Task task3 </span>= <span style="color: #0000ff"&gt;new</span> Task(() =><span style="color: #000000"&gt; { Console.WriteLine(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;线程ID:{0},Thread.CurrentThread.ManagedThreadId); Stopwatch stw </span>= <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; Stopwatch(); stw.Start(); </span><span style="color: #0000ff"&gt;long</span> result = SumNumbers(<span style="color: #800080"&gt;15000000</span><span style="color: #000000"&gt;); stw.Stop(); Console.WriteLine(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;线程ID:{0},stw.ElapsedMilliseconds); }); task1.Start(); task2.Start(); task3.Start(); Console.ReadKey(); } </span><span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;long</span> SumNumbers(<span style="color: #0000ff"&gt;int</span><span style="color: #000000"&gt; count) { </span><span style="color: #0000ff"&gt;long</span> sum = <span style="color: #800080"&gt;0</span><span style="color: #000000"&gt;; </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;int</span> i = <span style="color: #800080"&gt;0</span>; i < count; i++<span style="color: #000000"&gt;) { sum </span>+=<span style="color: #000000"&gt; i; } Thread.Sleep(</span><span style="color: #800080"&gt;3000</span><span style="color: #000000"&gt;); </span><span style="color: #0000ff"&gt;return</span><span style="color: #000000"&gt; sum; } }</span></pre>

执行结果:

2. 等待Task多线程任务执行完成

Main(= Task(() => List</span><Task> listTask = <span style="color: #0000ff"&gt;new</span> List<Task><span style="color: #000000"&gt;(); listTask.Add(task1); listTask.Add(task2); listTask.Add(task3); task1.Start(); task2.Start(); task3.Start(); Task.WaitAll(listTask.ToArray()); Console.WriteLine(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;所有线程执行完成。</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;); Console.ReadKey(); } </span><span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;long</span> SumNumbers(<span style="color: #0000ff"&gt;int</span><span style="color: #000000"&gt; count) { </span><span style="color: #0000ff"&gt;long</span> sum = <span style="color: #800080"&gt;0</span><span style="color: #000000"&gt;; </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;int</span> i = <span style="color: #800080"&gt;0</span>; i < count; i++<span style="color: #000000"&gt;) { sum </span>+=<span style="color: #000000"&gt; i; } Thread.Sleep(</span><span style="color: #800080"&gt;3000</span><span style="color: #000000"&gt;); </span><span style="color: #0000ff"&gt;return</span><span style="color: #000000"&gt; sum; } }</span></pre>

执行结果:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读