首頁 > 後端開發 > C++ > Task.Run() 與 Task.Factory.StartNew():什麼時候該使用哪一個?

Task.Run() 與 Task.Factory.StartNew():什麼時候該使用哪一個?

Mary-Kate Olsen
發布: 2025-01-12 08:58:41
原創
666 人瀏覽過

Task.Run() vs. Task.Factory.StartNew(): When Should You Use Which?

.NET非同步程式設計:Task.Run()與Task.Factory.StartNew()的比較

在.NET非同步程式設計中,經常需要建立和啟動新的任務。為此,.NET框架提供了兩種常用的方法:Task.Run()Task.Factory.StartNew()。雖然兩者都實現了相同的基本目標,但它們的功能和用例有所不同。

Task.Factory.StartNew()

Task.Factory.StartNew()功能更全面,提供了多種選項來自訂新任務的行為。它接受的一些關鍵參數包括:

  • Action/Func: 在新任務中執行的委託。
  • CancellationToken: 可用於中止任務的取消令牌。
  • TaskCreationOptions: 一組選項,用於控制任務的行為,例如其建立選項和排程器。
  • TaskScheduler: 將執行任務的排程程式。

這種靈活性可讓您根據特定需求調整任務,例如建立長時間運行的任務或在特定執行緒上執行任務。

Task.Run()

Task.Run()是在.NET 4.5中引入的Task.Factory.StartNew()的簡化版本。它為新任務提供了預設配置,使用以下設定:

  • CancellationToken.None: 不使用取消令牌。
  • TaskCreationOptions.DenyChildAttach: 新任務建立的子任務無法附加到原始任務。
  • TaskScheduler.Default: 任務將在預設任務調度程序上運行,通常使用執行緒池。

當您不需要任何特殊自定義,只需使用預設設定快速啟動新任務時,Task.Run()是一個方便的選擇。

何時使用Task.Run()與Task.Factory.StartNew()

一般來說,當您需要自訂新任務的行為時,請使用Task.Factory.StartNew()。這包括以下場景:

  • 建立長時間運行的任務
  • 指定特定的取消策略
  • 在特定執行緒或執行緒池上執行任務

當您不需要任何自訂,只需使用預設設定建立新任務時,請使用Task.Run()Task.Run()是一個快捷方式,簡化了任務的創建,無需額外的配置。

以上是Task.Run() 與 Task.Factory.StartNew():什麼時候該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板