0Pricing
C# Academy · レッスン

AsyncとAwait:非同期コードを扱う

非同期プログラミングを身につけ、応答性の高いアプリケーションを作成します

「AsyncとAwait:非同期コードを扱う」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン2/5です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全5レッスンが含まれています。

async と await の概要

async と await:非同期コードの操作

次のレッスンへようこそ!このレッスンでは、C#でasyncとawaitを使い、アプリケーションの応答性とパフォーマンスを向上させる非同期コードを記述する方法を学びます。さっそく始めましょう!

AsyncとAwait:非同期コードを扱う — イラスト1

非同期プログラミングとは

非同期プログラミングとは

非同期プログラミングを使用すると、メインスレッドをブロックせずにタスクを独立して実行できます。これは、ファイルの読み込み、インターネットからのデータ取得、データベースとのやり取りなどのタスクに特に役立ちます。

重要なポイント:非同期コードを使用すると、特に UI アプリケーションやサーバーアプリケーションの応答性が向上します。

async と await の理解

async と await の理解

asyncとawaitは、非同期プログラミングを簡単にする C# のキーワードです。

  • async:メソッドを非同期としてマークします。
  • await:待機しているタスクが完了するまで、メソッドの実行を一時停止します。

重要なポイント:非同期メソッドは常にTaskまたはTask<T>を返します。

非同期メソッドの作成

非同期メソッドの作成

時間のかかるタスクをシミュレートする非同期メソッドを作成してみましょう。例:

ヒント:非同期処理で遅延をシミュレートするには、Task.Delay()を使用します。

using System;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        Console.WriteLine("Starting task...");
        await PerformTask();
        Console.WriteLine("Task completed!");
    }

    static async Task PerformTask() {
        await Task.Delay(3000); // Simulates a 3-second delay
        Console.WriteLine("Task is running...");
    }
}

非同期メソッドからの値の返却

非同期メソッドからの値の返却

非同期メソッドでは、Task<T>を使って値を返すことができます。例:

using System;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        int result = await CalculateSumAsync(10, 20);
        Console.WriteLine("Result: " + result);
    }

    static async Task<int> CalculateSumAsync(int a, int b) {
        await Task.Delay(1000); // Simulates a delay
        return a + b;
    }
}

非同期コードでの例外処理

非同期コードでの例外処理

非同期メソッドで例外を処理するには、try-catchを使用します。例:

using System;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        try {
            await DivideAsync(10, 0);
        } catch (Exception ex) {
            Console.WriteLine("Error: " + ex.Message);
        }
    }

    static async Task DivideAsync(int a, int b) {
        await Task.Delay(1000);
        if (b == 0) throw new DivideByZeroException("Cannot divide by zero.");
        Console.WriteLine("Result: " + (a / b));
    }
}

練習課題

練習課題

URL からデータを取得し、その内容を表示する非同期メソッドを作成してください。例:

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        string url = "https://jsonplaceholder.typicode.com/todos/1";
        string data = await FetchDataAsync(url);
        Console.WriteLine("Data: " + data);
    }

    static async Task<string> FetchDataAsync(string url) {
        using HttpClient client = new HttpClient();
        return await client.GetStringAsync(url);
    }
}

非同期プログラミングのベストプラクティス

非同期プログラミングのベストプラクティス

ここでは、いくつかのベストプラクティスを紹介します。

  • I/O 操作や時間のかかる計算を伴うタスクには、asyncとawaitを使用します。
  • .Resultや.Wait()を使って非同期コードをブロックしないようにします。
  • 未処理のエラーを防ぐため、例外を処理します。
  • デッドロックを回避するため、ライブラリコードではConfigureAwait(false)を使用します。

ヒント:非同期メソッドは簡潔にし、単一の責務に集中させます。

よくできました!

よくできました!

おめでとうございます!asyncとawaitを使って、C#で非同期コードを記述する方法を学びました。次のレッスンでは、並列プログラミングのためのスレッドとタスクについて学びます。引き続きコーディングに取り組みましょう!

Continueをクリックして、次のレッスンに進んでください。

AsyncとAwait:非同期コードを扱う — イラスト10

よくある質問

「AsyncとAwait:非同期コードを扱う」レッスンは無料ですか?

はい。「AsyncとAwait:非同期コードを扱う」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全5レッスンが含まれています。

「AsyncとAwait:非同期コードを扱う」で何を学びますか?

非同期プログラミングを身につけ、応答性の高いアプリケーションを作成します ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/5です。

「AsyncとAwait:非同期コードを扱う」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. C#のジェネリクス
  2. AsyncとAwait:非同期コードを扱う
  3. スレッドとタスクを理解する
  4. デリゲートとラムダを探る
  5. C#のリフレクションを理解する
← C# Academyに戻る