C# プログラミング言語の await キーワードは、非同期メソッドによって提供される操作が完了するまで、囲まれたすべての非同期メソッドを一時停止するために使用されます。開発者が複数の関数を非同期で呼び出すには、async と await が頻繁に使用され、推奨されます。 async とともに await 関数を単純に実装するだけで、非同期プログラミングのほぼすべての機能を継承することができます。ここで、await キーワードを実装するための標準構文の理解に進みましょう。
構文:
await キーワードの標準構文は単純で、キーワードの後に関数またはメソッドが続きます。構文は次のとおりです:
await anyFunction();
ここでは、await キーワードで始まり、その後に関数が続く構文があります。これはプログラム上の任意の関数です。自由に、構文内の任意のメソッド クラスまたは関数に await キーワードを呼び出して渡すことができます。
次に、C# で await キーワードが実際にどのように機能するかを理解します。基本的に、await キーワードは、オペランドが操作を完了するまで async メソッドの操作を停止します。そして、非同期操作の完了後、await キーワードがあれば操作結果を返します。この同じ await キーワードは、非同期メソッドの脅威をブロックしません。また、それを囲んでいる非同期メソッドを一時停止した後、プログラムの制御はプログラムの呼び出し元に返されます。ここでは、await キーワードの仕組みと、await キーワードを実装しながらフローをプログラムする方法を説明します。次に、await キーワードを実装し、それが実際の例でどのように機能するかを確認します。
await キーワードの概要とその仕組みを理解したところで、例を示しながら await キーワードの説明に進みましょう。ここでの最初の例では、print ステートメントと await キーワードを含む単一のメソッドを単純に使用します。
コード:
using System; using System.Threading.Tasks; class Program { static void Main(string[] args) { first_meth(); Console.ReadKey(); } public static async Task first_meth() { await Task.Run(() => { for (int a = 0 ; a < 2; a++ ) { Console.WriteLine(" Simple demonstration of await keyword."); } }); } }
出力:
コードの説明: これは await キーワードの非常に単純なデモンストレーションであり、単一のメソッドと main メソッドがあります。 main メソッドは最初のメソッドを呼び出し、必ず実行されます。このメソッドには await キーワードが実装されています。出力は、print ステートメントが 2 回出力されることになります。
予想どおり、出力は 2 回出力されたステートメントです。次の例では、まったく依存しない 2 つの異なるメソッドを用意し、main メソッドを通じてそれらを呼び出します。プログラムのコードは次のとおりです:
コード:
using System; using System.Threading.Tasks; class Program { static void Main(string[] args) { exam1(); exam2(); Console.ReadKey(); } public static async Task exam1() { await Task.Run(() => { for (int a = 0 ; a < 5 ; a++ ) { Console.WriteLine(" This will be printed 5 times."); } }); } public static void exam2() { for (int a = 0 ; a < 2 ; a++ ) { Console.WriteLine(" This statement will be printed 2 times. "); } } }
出力:
コードの説明: 最初の例では、完全に独立した 2 つの異なるメソッドがあり、プログラムの main メソッドからこれらのメソッドを呼び出しています。必要なシステム ファイルから始めて、メイン メソッドを含むクラス プログラムを作成します。メイン メソッドの中で、宣言される 2 つのメソッドを呼び出します。最初のメソッド Exam1 は、await キーワードの後にラムダ関数が続き、出力ステートメントを出力するステートメントを使用して開始されます。次に、2 番目のメソッド Exam2 があります。これには for ステートメントがあり、出力ステートメントを何度も出力します。
予想どおり、出力ステートメントはコードで述べたとおりです。次に、3 つのメソッドといくつかの print ステートメントを持つ別の例で await キーワードを実装します。
コード:
using System; using System.Threading.Tasks; class Program { static void Main(string[] args) { Console.WriteLine("\n"); callMethod(); Console.ReadKey(); } public static async void callMethod() { Task<int> task = exam1(); exam2(); int total = await task; exam3(total); } public static async Task<int> exam1() { int total = 0; await Task.Run(() => { for (int a = 0 ; a < 10 ; a++ ) { Console.WriteLine(" This is a simple statement. "); total += 1; } }); return total; } public static void exam2() { for (int a = 0 ; a < 2 ; a++ ) { Console.WriteLine(" This is a second output statement."); } } public static void exam3(int total) { Console.WriteLine(" Total number of statements from first method are " + total); } }
出力:
コードの説明: 3 番目の例では、3 つの異なるメソッドがあり、これらのメソッドをメイン メソッドから呼び出します。 main メソッドで callMethod を呼び出します。この callMethod には、exam1 メソッドを呼び出すタスクがあるため、exam1 が実行されます。プログラムに従って、ここでは、exam1 メソッドは await キーワードがあるため最初に実行されません。そのため、次のメソッド (exam1) に移動し、exam2 メソッドが実行されます。これは、前述のように 2 回出力されるステートメントです。 for ループ。次に、exam1 メソッドが出力され、その後にexam3 が出力されます。exam3 メソッドは単一のステートメントです。合計 13 個の出力ステートメントが出力されます。最後のステートメントは、example1 メソッドからステートメントを出力する回数を出力します。説明したように、print ステートメントの合計数は 13 で、複数のメソッドを使用して await キーワードを単純に実行します。
結論として、await キーワードはイベントを一時停止し、プログラムの制御を呼び出し元に戻すために使用されます。この機能は、複数のメソッドと関数がある場合に広く使用されます。 await キーワードは呼び出し元にコントロールを返すために使用され、async メソッド内でのみ適用できます。
以上がC# 待機中の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。