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) でうまくいく時がある。(ちゃんと直せよ!って声もありますが)