C#でのasyncとawaitの使い方は何ですか?
C#には、非同期処理を扱うためのキーワードであるasyncとawaitがあります。
async キーワードは、メソッドを修飾するために使用され、そのメソッドが非同期メソッドであることを示します。非同期メソッドは、途中で一時停止することができ、非同期操作が完了するのを待っている間に他のコードを実行することができます。
awaitキーワードは、非同期操作の完了を待機し、非同期操作の結果を返します。awaitキーワードは、非同期メソッド内でのみ使用でき、タスク(Task)、タスク結果(Task)、ValueTaskなどの待機可能なオブジェクト、またはカスタム非同期操作のタイプを返すメソッドを待機できます。
asyncとawaitを使用する基本手順は次の通りです:
- メソッドの宣言時、戻り値の前にasyncキーワードを追加すると、そのメソッドが非同期メソッドであることを示します。
- 非同期処理が完了するのを待つ場所では、awaitキーワードを使用します。
- await キーワードで修飾された式は、タスクを返すメソッド呼び出しでなければいけない。これによって、非同期操作の完了時にメソッドの実行を一時停止および再開できるようになる。
- await キーワードを使用して非同期操作の完了を待機すると、非同期操作の結果を取得して後続のコードを実行できます。
以下は、asyncとawaitを使用した例です。
public async Task<string> GetDataAsync()
{
// 异步操作,例如从网络获取数据
string result = await DownloadDataAsync();
// 在异步操作完成后继续执行后续的代码
Console.WriteLine("异步操作完成");
return result;
}
上記の例では、GetDataAsyncメソッドは非同期メソッドであり、awaitキーワードを使用してDownloadDataAsyncメソッドの完了を待ちます。DownloadDataAsyncメソッドが完了した後、返された結果はresult変数に格納され、その後のコードが実行されます。
留意一下,非同期メソッドの戻り値の型は通常、Task(戻り値なし)またはTask(戻り値あり)であり、呼び出し元が非同期操作の完了を待つことができるようになっています。例えば、GetDataAsyncメソッドはTask型のタスクを返します。