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";
}