FC2ブログ

表示中のMessageDialogをコードから消す

2012.09.27.Thu.23:23
ちょっと調べてみたけど、なかなか答えにたどり着けなかったのでメモ。

通常、一度表示したMessageDialogを消すには、MessageDialog上のボタンをクリックしないと消えません。
しかし、時にはコード側からMessageDialogを消したいこともあります。
(基本的にはそんなことをしないようにUI等を設計する必要がありますが…)

とりあえず、下記コードを実行すると5秒後に消えます。
ThreadPoolTimerで行けるということはUIスレッドじゃなくてもいいのかな?


var dialog = new MessageDialog("test");
var cmd = dialog.ShowAsync(); // awaitを使わずに表示

// 5秒後にcmd(IAsyncOperation<IUICommand>)をキャンセル
ThreadPoolTimer timer = ThreadPoolTimer.CreateTimer(
(_) => { cmd.Cancel(); },
TimeSpan.FromSeconds(5));
スポンサーサイト



コメント

管理者のみに表示