C# のタスクをより深く理解する
C# タスクの詳細な説明、具体的なコード例が必要です
はじめに:
C# マルチスレッド プログラミングでは、タスクは実装に一般的に使用されるプログラミング モデルです。オペレーション。 Task は、同時タスクを処理する簡単な方法を提供し、複数のスレッドで非同期操作を並行して実行でき、例外と戻り値を簡単に処理できます。この記事では、C# タスクの使用方法を詳しく紹介し、いくつかの具体的なコード例を示します。
1. Task の作成と操作
-
Task オブジェクトの作成方法
C# で Task オブジェクトを作成する方法は数多くありますが、よく使われるのは次の 3 つです。 :
a. コンストラクターを使用して作成します:Task task = new Task(() => { // 异步任务逻辑 });
ログイン後にコピーb.
Task.Run
メソッドを使用して作成します:Task task = Task.Run(() => { // 异步任务逻辑 });
ログイン後にコピーc.
TaskFactory を使用します.StartNew
メソッドの作成:TaskFactory taskFactory = new TaskFactory(); Task task = taskFactory.StartNew(() => { // 异步任务逻辑 });
ログイン後にコピー タスクの開始と待機
タスクの作成が完了したら、Task を呼び出してタスクの実行を開始できます。 .Start
メソッド。その後、Task.Wait
メソッドを使用して、タスクが完了するのを待ちます。例は次のとおりです。task.Start(); // 启动任务 task.Wait(); // 等待任务完成
ログイン後にコピーTask.Run
またはTaskFactory.StartNew
を使用してタスクが作成された場合、タスクは自動的に開始され、Start
メソッドを呼び出す必要はありません。タスクのキャンセル
場合によっては、実行中のタスクをキャンセルする必要があります。CancelToken
を使用してタスクをキャンセルできます。例は次のとおりです。CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); CancellationToken cancellationToken = cancellationTokenSource.Token; Task task = Task.Run(() => { while (true) { // 检查任务是否被取消 if (cancellationToken.IsCancellationRequested) { break; } // 异步任务逻辑 } }, cancellationToken); // 取消任务 cancellationTokenSource.Cancel();
ログイン後にコピータスクのロジックで、
cancelToken.IspaymentRequested
プロパティを定期的にチェックして、タスクをキャンセルする必要があるかどうかを判断します。
2. タスクの例外処理と戻り値
例外処理
非同期タスクでは、例外が発生すると、デフォルトでタスクは直接例外をスローし、プログラムをクラッシュさせます。タスクで例外を処理するには、タスクでtry...catch
ステートメントを使用して例外をキャッチし、例外ロジックを処理します。例は次のとおりです。Task task = Task.Run(() => { try { // 异步任务逻辑 } catch (Exception ex) { // 异常处理逻辑 } });
ログイン後にコピー戻り値
非同期タスクから戻り値を取得する必要がある場合があります。タスクの戻り値転送を実現するには、Task<TResult>
クラスを使用します。TResult
は戻り値の型です。例は次のとおりです。Task<int> task = Task.Run(() => { // 异步任务逻辑 return 42; }); int result = task.Result;
ログイン後にコピー上記の例の
Task<int>
は、タスクが整数を返すことを意味します。戻り値は、Task.Result
プロパティを通じて取得できます。
3. タスクの並列実行
Task はタスクの並列実行を簡単に実装し、プログラムのパフォーマンスを向上させることができます。 C# には、並列プログラミングを簡素化するための Parallel
クラスが用意されています。例は次のとおりです。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; // 并行执行计算 Parallel.ForEach(numbers, number => { Console.WriteLine(number * number); });
上記の例では、Parallel.ForEach
メソッドを使用して、数値のリストに対して二乗計算を並列実行します。異なる番号の計算タスクが異なるスレッド上で並行して実行できることがわかります。
概要:
この記事では、C# タスクの使用方法を詳しく紹介し、いくつかの具体的なコード例を示します。タスクを使用すると、非同期操作を簡単に実装し、プログラムの同時実行パフォーマンスを向上させることができます。同時に、Task は単純な例外処理と戻り値配信メカニズムも提供するため、同時プログラミングがより柔軟になり、保守が容易になります。この記事の紹介と例を通じて、読者の皆様が C# タスクについて理解を深め、実際のプロジェクトに柔軟に適用できるようになることを願っています。
以上がC# のタスクをより深く理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。
