- Task.Factory.StartNew()はobsoleteでTask.Run()。
- current thredを止めて待つのがWailtXXX、そういうTaskを返すのがWhenXXX。
- asyncをつけたメソッドの中でawaitが使える。
- asyncをつけたメソッドは戻り値を自動的にXからTaskに変換して返す。
- awaitをつなげることでシーケンシャルな処理ができる。
- 逆にパラレルに実行したい場合は、awaitで待たずに進める。
gist8085926
実行結果
* Run Sequential *
* id=421107885 start: 0 *
* id=421107885 a: 10 *
- Run Pararell -
- id=301241367 start: 0 -
- id=301241367 a: 10 -
- id=880988194 start: 0 -
- id=880988194 a: 10 -
$ Run Sequential NoAwait $
$ id=924151092 start: 0 $
$ id=924151092 a: 10 $
* id=421107885 b: 20 *
* id=551977066 start: 0 *
* id=551977066 a: 10 *
* id=551977066 b: 20 *
* sum: 60 *
- id=301241367 b: 20 -
- id=880988194 b: 20 -
- sum: 60 -
$ id=924151092 b: 20 $
$ id=277322821 start: 0 $
$ id=277322821 a: 10 $
$ id=277322821 b: 20 $
$ sum: 60 $