Asyncシナプス繋がった
去年はBackGroundWorker使ってた訳ですが、今日、ぼーっとしてたらAsyncのシナプスが繋がったので備忘に。
private async void Button_Click(object sender, RoutedEventArgs e) { status.Text = "1回目"; await Task.Run(() => Thread.Sleep(1000)); status.Text = "2回目"; await Task.Run(() => Thread.Sleep(1000)); status.Text = "3回目"; }
注:statusはTextBlockです。
Asyncつかわないと、
- ボタンを押す
- 2秒たつ
- 3回目とTextBlockに3回目と表示される
となりますが、上のコードのようにすると
- ボタンを押す
- 1回目と表示される
- 1秒たつ
- 2回目と表示される
- 1秒たつ
- 3回目と表示される
となります。UIに途中経過が簡単に反映されるので、BackGroundWorkerとか用済みですね。BackGroundWorkerの作りがあまり好きでなかったので、これは嬉しいです。
ソースはGitHubにおいておきます。