Task,async,await
■Task
・処理したい仕事のまとまり:Task(=複数のメソッド)を保持して、
それを実行開始するもの。手順書。
・Task.Runは、Taskのインスタンス化と実行を同時にするもの。
・Task.Runは内部のメソッドを非同期で実行開始だけするもの。
よって、処理が終わる前に即座に次の処理に進む。
var task = Task.Run( () =>
{
MethodA();
MethodB();
});
■async
・メソッドやTaskの宣言時に付ける文言。
付けたメソッドを「非同期メソッド」という。
・つけると、メソッド内でawaitを使えるようになるだけ。
■await
・非同期で実行されるTaskやメソッドの終了を待つ。
終了を待つので、非同期処理の実行結果を受け取り処理することが
できる。
(ex)
var returnValue = await Task.Run( () => GetNameMethod()) ;
Task.RunでGetNameMethodを実行し、その実行が終わるのを待ち、
returnValue変数に結果をセットしている。
■戻り値
Taskの実行結果の戻り値を呼び出し元に返す場合
そのメソッドの引数の型は、Task<T>になる。
例えば、Stringのリストを返すGetNameMethodを非同期で実行する場合
以下のようになる。
public async Task<IEnumerable<String>> GetNameByStringList()
{
return await Task.Run( () => this.GetNameMethod()) ;
}