ホームページ バックエンド開発 C#.Net チュートリアル C# のタスクをより深く理解する

C# のタスクをより深く理解する

Feb 18, 2024 pm 12:03 PM
詳しい説明 c# task

C# のタスクをより深く理解する

C# タスクの詳細な説明、具体的なコード例が必要です

はじめに:
C# マルチスレッド プログラミングでは、タスクは実装に一般的に使用されるプログラミング モデルです。オペレーション。 Task は、同時タスクを処理する簡単な方法を提供し、複数のスレッドで非同期操作を並行して実行でき、例外と戻り値を簡単に処理できます。この記事では、C# タスクの使用方法を詳しく紹介し、いくつかの具体的なコード例を示します。

1. Task の作成と操作

  1. 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(() => {
     // 异步任务逻辑
    });
    ログイン後にコピー
  2. タスクの開始と待機
    タスクの作成が完了したら、Task を呼び出してタスクの実行を開始できます。 .Start メソッド。その後、Task.Wait メソッドを使用して、タスクが完了するのを待ちます。例は次のとおりです。

    task.Start(); // 启动任务
    task.Wait(); // 等待任务完成
    ログイン後にコピー

    Task.Run または TaskFactory.StartNew を使用してタスクが作成された場合、タスクは自動的に開始され、 Start メソッドを呼び出す必要はありません。

  3. タスクのキャンセル
    場合によっては、実行中のタスクをキャンセルする必要があります。 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. タスクの例外処理と戻り値

  1. 例外処理
    非同期タスクでは、例外が発生すると、デフォルトでタスクは直接例外をスローし、プログラムをクラッシュさせます。タスクで例外を処理するには、タスクで try...catch ステートメントを使用して例外をキャッチし、例外ロジックを処理します。例は次のとおりです。

    Task task = Task.Run(() => {
     try {
         // 异步任务逻辑
     }
     catch (Exception ex) {
         // 异常处理逻辑
     }
    });
    ログイン後にコピー
  2. 戻り値
    非同期タスクから戻り値を取得する必要がある場合があります。タスクの戻り値転送を実現するには、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

C# を使用した Active Directory C# を使用した Active Directory Sep 03, 2024 pm 03:33 PM

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

C# シリアル化 C# シリアル化 Sep 03, 2024 pm 03:30 PM

C# シリアル化のガイド。ここでは、C# シリアル化オブジェクトの導入、手順、作業、例についてそれぞれ説明します。

C# の乱数ジェネレーター C# の乱数ジェネレーター Sep 03, 2024 pm 03:34 PM

C# の乱数ジェネレーターのガイド。ここでは、乱数ジェネレーターの仕組み、擬似乱数の概念、安全な数値について説明します。

C# データ グリッド ビュー C# データ グリッド ビュー Sep 03, 2024 pm 03:32 PM

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

C# のパターン C# のパターン Sep 03, 2024 pm 03:33 PM

C# のパターンのガイド。ここでは、C# のパターンの概要と上位 3 種類について、その例とコード実装とともに説明します。

C# の素数 C# の素数 Sep 03, 2024 pm 03:35 PM

C# の素数ガイド。ここでは、C# における素数の導入と例を、コードの実装とともに説明します。

C# の階乗 C# の階乗 Sep 03, 2024 pm 03:34 PM

C# の Factorial のガイド。ここでは、C# での階乗の概要について、さまざまな例とコード実装とともに説明します。

マルチスレッドと非同期C#の違い マルチスレッドと非同期C#の違い Apr 03, 2025 pm 02:57 PM

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

See all articles