.NET 並列タスク: Task.Start()、Task.Run()、および Task.Factory.StartNew() の比較
.NET スレッドと並列ライブラリ (TPL) では、開発者はタスクを非同期に実行する 3 つのメソッド、Task.Start()
、Task.Run()
、および Task.Factory.StartNew()
によく遭遇します。どちらもタスクを非同期で実行することを目的としていますが、そのニュアンスと適用可能なシナリオはまったく異なります。
Task.Start()
、Task.Run()
、Task.Factory.StartNew()
Task.Start()
は最も基本的なメソッドです。タスクの作成後にタスクを開始するには、明示的に Start()
メソッドを呼び出す必要があります。この方法はシンプルで簡単ですが、他の方法で提供されるセキュリティとオプションが欠けています。
Task.Run()
(.NET 4.5 以降に導入) は、最も一般的なシナリオに適した事前構成された設定を備えた、タスクを起動するための簡潔な構文を提供します。キャンセル、追加の防止、デフォルトのスケジュールなどの最適化されたパラメータを使用して、内部で Task.Factory.StartNew()
を呼び出します。
Task.Factory.StartNew()
は TPL で最も包括的なメソッドであり、タスクの作成をきめ細かく制御できます。開発者は、スケジュール、キャンセル、添付ポリシー、タスク作成オプションをカスタマイズできます。
適切な方法を選択してください
どの方法を選択するかは、特定のシナリオによって異なります:
Task.Run()
が推奨される選択肢です。使いやすく、設定が最適化されています。 Task.Factory.StartNew()
は必要な柔軟性を提供します。 Task.Start()
の使用は避けてください。 結論
Task.Start()
、Task.Run()
、および Task.Factory.StartNew()
は機能的には似ていますが、機能と使用シナリオが異なるため、そのニュアンスを理解することが重要です。タスクに基づいて適切なアプローチを選択することで、開発者は TPL の力を活用して、効率的で応答性の高いアプリケーションを作成できます。
以上がTask.Start()、Task.Run()、または Task.Factory.StartNew(): どの .NET メソッドを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。