名前付きのボタンがbExecute
あり、そのClick
イベントハンドラーには次の本体があります。
try
{
// Activate the progress ring
prProgress.Visibility = Visibility.Visible;
prProgress.IsActive = true;
bExecute.IsEnabled = false;
// Some Task
DoTask();
}
catch(Exception ex)
{
// Do Something
}
finally
{
// Stop the progress ring
prProgress.Visibility = Visibility.Collapsed;
prProgress.IsActive = false;
bExecute.IsEnabled = true;
}
この方法には次の問題があります。
- タスクが完了するまでUIがハングしているように見え、その後通常どおりに再開します。
- ProgressRing がアクティブ化されているようには見えません。
- bExecute ボタンが有効/無効に見えません。
DoExecute()
メソッドでラップできます。これによりUIがTask.Run()
解放されますが、有効/無効になっていることも表示されません。ProgressRing
bExecute
助言がありますか?