首頁 >後端開發 >C++ >如何在.NET 4.5中高效運行並行非同步任務?

如何在.NET 4.5中高效運行並行非同步任務?

Linda Hamilton
Linda Hamilton原創
2025-01-13 12:09:43969瀏覽

How Can I Efficiently Run Parallel Async Tasks in .NET 4.5?

最佳化 .NET 4.5 中的平行非同步操作

.NET 4.5 提供了強大的非同步程式設計功能,可以並發執行多個冗長的任務。 然而,一些初始實現可能顯得過於複雜,並且缺乏非同步方法固有的優雅性。 這個改進的範例解決了這些缺點。

增強的程式碼結構

以下精煉程式碼提供了更有效率、簡化的方法:

<code class="language-csharp">async Task GoAsync()
{
    Console.WriteLine("Initiating Tasks");

    Task<int> task1 = SleepAsync(5000);
    Task<int> task2 = SleepAsync(3000);

    await Task.WhenAll(task1, task2);

    int totalSleepTime = task1.Result + task2.Result;

    Console.WriteLine($"Total sleep time: {totalSleepTime} ms");
}

private async Task<int> SleepAsync(int milliseconds)
{
    Console.WriteLine($"Sleeping for {milliseconds} ms");

    try
    {
        await Task.Delay(milliseconds);
        return milliseconds;
    }
    finally
    {
        Console.WriteLine($"Sleep for {milliseconds} ms COMPLETE");
    }
}</code>

主要改善:

  • GoAsync 現在是非同步方法 (async Task),允許使用 await 來管理任務完成情況。
  • SleepAsync 是一個回傳 Task<int> 的非同步方法,反映了操作的非同步性質。
  • Task.WhenAll 有效地同時等待兩項任務的完成,消除了明確 .Result 存取的需要並提高了效能。

功能代碼:

修改後的程式碼同時執行這兩個任務,有效地收集結果。 此方法為.NET 4.5中並行非同步任務執行提供了更乾淨、更簡潔、更有效率的解決方案。

以上是如何在.NET 4.5中高效運行並行非同步任務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn