我正在构建一个需要从 Internet 下载 RSS 数据的 Windows 8 应用程序。
有一个等待的 GetFeedsAsync() 方法负责此操作,在我的应用程序主页的(异步)LoadState 方法中调用。
我选择将该任务委托给后台线程:
await Task.Run(() => feedDataSource.GetFeedsAsync());
我想要的只是显示一个 ProgressRing 并使其保持活动状态,直到该过程完成并准备好显示下载的数据。
我在 XAML 中定义了 ProgressRing:
<ProgressRing x:Name="LoadingProgressRing" IsActive="True" Foreground="White" Margin="0,400,0,0" Width="80" Height="80" VerticalAlignment="Top" Canvas.ZIndex="1" />
然后在代码隐藏中添加这两行:
LoadingProgressRing.IsActive = true;
await Task.Run(() => feedDataSource.GetFeedsAsync());
LoadingProgressRing.IsActive = false;
当应用程序启动时,它会导航到主页,其中 ProgressRing 显示 1 秒钟然后消失。数据下载在 20 秒后完成,然后按原样显示。
为什么 ProgressRing 会这样?我想不出任何理由让它变得不活跃,直到
LoadingProgressRing.IsActive = false;
命令被执行。