我有一个名为的按钮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()
一个Task.Run()
方法,这可以释放UI,但是你永远看不到ProgressRing
,也看不到bExecute
被启用/禁用。
有什么建议么?