まぐらぼ

Unity/Android、Microsoft系のWPFをやってます。

ストアアプリでプログレスバーを使う

StoreApp/C#でのプログレスバーの使い方。ここからのパクリネタ

ループ内に      HeavyWork(); をいれないと一瞬で終了してしまったので一応メモ。

 

()が勝手に*1にされるなぁ。。。はてな記法ってやつか。 

... で無効かしなあかんのか。

 

 

async private void Button_Click(object sender, RoutedEventArgs e)

{

    //Progressオブジェクトを生成。引数に渡すハンドラ内で、進捗を更新。

    var progressReporter = new Progress<int>(p => progressbar.Value = p);

 

    //非同期で実行するタスクに、Progressオブジェクトを渡す。

    idText.Text = await Task.Run(() => DoWork(progressReporter));

}

private string DoWork(IProgress<int> progressReporter)

{

    //進捗を表示

    int total = 1000;

    for (int i = 0; i < total; i++)

    {

        HeavyWork();

        progressReporter.Report((i * 100) / total);

    }

 

    //値を返す

    return "Completed";

}