基本的に、Sleepなんてすることはあまりないと思うのですが、ちょっとしたサンプルで重たい処理をエミュレートしようと思ってThread.Sleepを呼ぼうと思ったらThreadクラスがない!?古き良き?Threadクラスを使った並列処理なんてクレイジーどころか存在しないものになってしまったのですね。
ということで代替の方法です。同じことに困ってる先人はいるもので、下記のMSDNのフォーラムでそのまま質問があがってました。質問のほうでは、Timerも無いよ!?ということも聞いてるので見てみるといいかもしれません。
Sleepしよう
ということで数秒まって処理をするということをやってみたいと思います。使うメソッドはTaskクラスのDelayメソッドです。
画面にボタンを1つおいてボタンのクリックイベントハンドラと、重たい処理をエミュレートするメソッドを書きます。
private void Button_Click_1(object sender, RoutedEventArgs e) { // HeavyProcessメソッドの呼び出し自体は一瞬でButton_Click_1メソッドは // すぐ終わることに注意してね。 HeavyProcess(); } private async void HeavyProcess() { var stopwatch = Stopwatch.StartNew(); // 5秒くらいの重い処理 await Task.Delay(TimeSpan.FromSeconds(5)); stopwatch.Stop(); new MessageDialog(stopwatch.ElapsedMilliseconds + "ms!!").ShowAsync(); }
これで、プログラムを実行してボタンを押すと、5秒間待つような処理を作れます。あまり実践では役に立たないでしょうが一応メモということで。