手っ取り早い方法はTaskクラスを使う。
public Task<int> TestAsync()
{
return Task.Run<int>(async () =>
{
// ↓このループは時間のかかる処理のつもり
for (int i = 0; i < 10; i++)
{
Debug.WriteLine(i);
await Task.Delay(1000);
}
return 123;
});
}
private async void button_Click(object sender, RoutedEventArgs e)
{
int ret = await TestAsync();
await new MessageDialog(ret.ToString()).ShowAsync();
}
詳しくは、
連載:C# 5.0&VB 11.0新機能「async/await非同期メソッド」入門(最終回):第3回 非同期メソッドの内部実装とAwaitableパターンの独自実装 (2/2) - @ITに書かれている。
実際のところは、時間のかかる処理は別スレッドで動かすと思うんでTask.Runを使う方法でいいと思う。
コメント