そこに非同期戻り値以下のタイプ:
(1).Task <TResult>、非同期メソッドは、値を返します
(2).Task、非同期動作の方法を実行するが、任意の値を返さないため。
(3)イベントハンドラのために。
.Task <TResult>戻り値の型
使用してシステムを。 使用してSystem.Collections.Genericを。 使用してSystem.Linqのを。 使用してSystem.Textのを。 使用してSystem.Threading.Tasksを。 名前空間例 { クラスプログラム { 静的 ボイドメイン(文字列[]引数) { ストリング strInfo = ShowTodaysInfo()は、結果。 Console.WriteLineを(strInfo)。 Console.ReadKey(); } プライベート 静的 非同期タスク< ストリング > ShowTodaysInfo() { ストリングRET = String.Formatの(" {0} "、待つGetLeisureHours())。 リターンRET; } 静的 非同期タスク< INT > GetLeisureHours() { VAR今日= 待つ Task.FromResult < ストリング > (DateTime.Now.DayOfWeek.ToString())。 int型leisureHours; もし(today.First()== ' S ' ) leisureHours = 16 。 他 leisureHours = 5 ; 返すleisureHoursを。 } } }
二.Taskの戻り値の型
非同期メソッドの戻り値の型は、メソッドを呼び出すために使用することができた場合の方法は、非同期またはステートメントのオペランドが正常に返す戻り値の型を持っていないreturn文のリターンを含まない,,タスクタスクは、呼び出しが知っているメソッドの呼び出しが完了したかを聞くためにオペレータを待ちます非同期メソッドは完了です。
使用してシステムを。 使用してSystem.Collections.Genericを。 使用してSystem.Linqのを。 使用してSystem.Textのを。 使用してSystem.Threading.Tasksを。 名前空間例 { クラスプログラム { 静的 ボイドメイン(文字列[]引数) { SHOWINFO()待ち()。 Console.WriteLineを(" 主线程执行中... " ); } プライベート 非同期 静的タスクSHOWINFO() { Console.WriteLineを(" 异步调用中"); 待つ Task.Delay(2000 ); } } }
上記のコードでは、方法SHOWINFOは()returnステートメントを含むが、完了待ちSHOWINFOを表すタスクオブジェクトを返しません。