WinRT Sleep
#win8dev_jp #wpdev_jp
こんな感じ?(Windows 8 / Windows Phone 8 共通です。)
/// <summary>
/// 一定時間待ちます
/// </summary>
/// <param name="ms">待ち時間 (ミリ秒)</param>
private async void Sleep(int ms)
{
await System.Threading.Tasks.Task.Delay(TimeSpan.FromMilliseconds(ms));
}
追記1
全然だめじゃん!こうですね。(ご指摘ありがとうございます)
private void Button_Click_1(object sender, RoutedEventArgs e)
{
TaskwithSleeping();
}
private async void TaskwithSleeping()
{
int WaitTime = 5;
await System.Threading.Tasks.Task.Delay(TimeSpan.FromSeconds(WaitTime));
//wait後の処理
MessageDialog dialog = new MessageDialog("Finished");
dialog.ShowAsync();
}
処理は待ってから進めましょう。
追記2
ちゃんとSleep関数にしました。
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Sleep(5000);
//wait後の処理
MessageDialog dialog = new MessageDialog("Finished");
dialog.ShowAsync();
}
static void Sleep(int ms)
{
new Task(() => { }).Wait(ms);
}
文中でこれでもいいんだけどね。
new Task(() => { }).Wait(1000);
あると便利ですよね。スレッドチェンジが発生するので、表示のタイミングでうまくいかないときに Sleep(1) でうまくいく時がある。(ちゃんと直せよ!って声もありますが)
Comments
- Anonymous
April 22, 2013
async void なので、「一定時間待ちます」と言いながら、待たないですよね f(^^; ひょっとして Task.Yield() ?