await演算子: 登場以前
• 元(async/await以前)
• コールバック地獄
var c = new HttpClient();
c.GetAsync("http://ufcpp.net").ContinueWith(tr =>
{
var res = tr.Result;
res.Content.ReadAsStringAsync().ContinueWith(tc =>
{
var content = tc.Result;
Console.WriteLine(content);
});
});
もっと面倒なことも
• 例外処理は?
• 分岐やループは?
await演算子: 登場後
• C# 5.0以降
• 非同期なところにawait演算子を足すだけ
• 例外処理 → try-catchが普通に使える
• 分岐やループ → if, for, while, foreachが普通に使える
var c = new HttpClient();
var res = await c.GetAsync("http://ufcpp.net");
var content = await res.Content.ReadAsStringAsync();
Console.WriteLine(content);
awaitはどれ?(1)
• awaitが一番活躍するのは非同期I/O待ち
var c = new HttpClient();
var res = await c.GetAsync("http://ufcpp.net");
var content = await res.Content.ReadAsStringAsync();
Console.WriteLine(content);
コールバック
リソースを解放
リソースを
解放