AsyncとAwait:非同期コードを扱う
非同期プログラミングを身につけ、応答性の高いアプリケーションを作成します
「AsyncとAwait:非同期コードを扱う」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン2/5です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全5レッスンが含まれています。
async と await の概要
async と await:非同期コードの操作
次のレッスンへようこそ!このレッスンでは、C#でasyncとawaitを使い、アプリケーションの応答性とパフォーマンスを向上させる非同期コードを記述する方法を学びます。さっそく始めましょう!

非同期プログラミングとは
非同期プログラミングとは
非同期プログラミングを使用すると、メインスレッドをブロックせずにタスクを独立して実行できます。これは、ファイルの読み込み、インターネットからのデータ取得、データベースとのやり取りなどのタスクに特に役立ちます。
重要なポイント:非同期コードを使用すると、特に 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:非同期コードを扱う」レッスンは無料ですか?
はい。「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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- C#のジェネリクス
- AsyncとAwait:非同期コードを扱う
- スレッドとタスクを理解する
- デリゲートとラムダを探る
- C#のリフレクションを理解する