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()) ;
        }