// 戻り値無しのつきはなし async void Foo1() { // logic } // 戻り値無しのawaitで待機可能なもの async Task Foo2() { // logic } // 戻り値有りのawaitで待機可能なもの async Task<T> Foo3() { return T型の何か; }
使う側
// 呼び出し先でawaitされててもかまわないで突っ走る Foo1(); // Foo2が終わるまで待機 await Foo2(); // Foo3が終わるまで待機、結果を受け取れる T result = await Foo3();
ここで待機といっているが、処理が止まるわけではなくバックグラウンドで処理が行われて、それが終わると今のスレッドに戻ってきて処理が続くイメージ。ブロックはしない。
便利なことに、デリゲートでも使える。
HogeProcess(async () =>
{
// 何かしらのTaskを返すメソッド呼び出し
await Task.Run(() => ....);
});
とりあえず、これくらいを覚えておいておけばコードは読めるかな??厳密なところは信頼と実績の岩永さんのページを。