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">new</span> Task(() =><span style="color: #000000"> {
Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">线程ID:{0},Thread.CurrentThread.ManagedThreadId);
Stopwatch stw </span>= <span style="color: #0000ff">new</span><span style="color: #000000"> Stopwatch();
stw.Start();
</span><span style="color: #0000ff">long</span> result = SumNumbers(<span style="color: #800080">20000000</span><span style="color: #000000">);
stw.Stop();
Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">线程ID:{0},stw.ElapsedMilliseconds);
});
Task task3 </span>= <span style="color: #0000ff">new</span> Task(() =><span style="color: #000000"> {
Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">线程ID:{0},Thread.CurrentThread.ManagedThreadId);
Stopwatch stw </span>= <span style="color: #0000ff">new</span><span style="color: #000000"> Stopwatch();
stw.Start();
</span><span style="color: #0000ff">long</span> result = SumNumbers(<span style="color: #800080">15000000</span><span style="color: #000000">);
stw.Stop();
Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">线程ID:{0},stw.ElapsedMilliseconds);
});
task1.Start();
task2.Start();
task3.Start();
Console.ReadKey();
}
</span><span style="color: #0000ff">static</span> <span style="color: #0000ff">long</span> SumNumbers(<span style="color: #0000ff">int</span><span style="color: #000000"> count)
{
</span><span style="color: #0000ff">long</span> sum = <span style="color: #800080">0</span><span style="color: #000000">;
</span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = <span style="color: #800080">0</span>; i < count; i++<span style="color: #000000">)
{
sum </span>+=<span style="color: #000000"> i;
}
Thread.Sleep(</span><span style="color: #800080">3000</span><span style="color: #000000">);
</span><span style="color: #0000ff">return</span><span style="color: #000000"> sum;
}
}</span></pre>
执行结果: 2. 等待Task多线程任务执行完成 Main(= Task(() =>
List</span><Task> listTask = <span style="color: #0000ff">new</span> List<Task><span style="color: #000000">();
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">"</span><span style="color: #800000">所有线程执行完成。</span><span style="color: #800000">"</span><span style="color: #000000">);
Console.ReadKey();
}
</span><span style="color: #0000ff">static</span> <span style="color: #0000ff">long</span> SumNumbers(<span style="color: #0000ff">int</span><span style="color: #000000"> count)
{
</span><span style="color: #0000ff">long</span> sum = <span style="color: #800080">0</span><span style="color: #000000">;
</span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = <span style="color: #800080">0</span>; i < count; i++<span style="color: #000000">)
{
sum </span>+=<span style="color: #000000"> i;
}
Thread.Sleep(</span><span style="color: #800080">3000</span><span style="color: #000000">);
</span><span style="color: #0000ff">return</span><span style="color: #000000"> sum;
}
}</span></pre>
执行结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |