在我的程序中,我有一个计时器,当它滴答为 0 时,我希望我的应用程序“连接”到服务,并且在它“连接”时,让它显示一个进度环。
似乎我的进度环直到它被设置为活动的功能结束时才被“激活”。但由于我正在等待连接功能的完成,进度环永远不会出现。
我尝试了各种不同的方法来解决这个问题,但我缺乏对等待/任务/调度的理解来完成这项工作。
这是与 ProgressRing 和 Connect 函数有关的代码:
vm.IsConnecting = true;
await Window.Current.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => vm.Connect());
if (vm.ConnectionClear)
this.Frame.Navigate(typeof(MainPage), vm);
vm.IsConnecting = false;
vm.IsConnecting 是 ProgressRing 的 IsActive 属性所绑定的。
如何让它在 vm.IsConnecting 设置为 true 后立即显示 progressRing?
应该注意的是,我的目标是 WinRT,因此我的工具箱有些有限。
奇怪的是,我在 EventHandler 中有与上面完全相同的代码块,用于单击按钮,并且它的工作方式与我认为的一样。也就是说,当单击按钮时,会显示 ProgressRing,程序会执行 connect 方法,完成后,ProgressRing 会消失。
private async void Connect_Clicked(object sender, RoutedEventArgs e)
{
vm.IsConnecting = true;
await Window.Current.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => vm.Connect());
if (vm.ConnectionClear)
this.Frame.Navigate(typeof(MainPage), vm);
vm.IsConnecting = false;
}