インターネットから RSS データをダウンロードする必要がある Windows 8 アプリを作成しています。
これを担当する待機中の GetFeedsAsync() メソッドがあり、アプリの HomePage の (非同期) 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" />
そして、コード ビハインドに次の 2 行を追加しました。
LoadingProgressRing.IsActive = true;
await Task.Run(() => feedDataSource.GetFeedsAsync());
LoadingProgressRing.IsActive = false;
アプリが起動されると、ProgressRing が 1 秒間表示されてから消える HomePage に移動します。データのダウンロードは 20 秒後に終了し、正常に表示されます。
ProgressRing がこのように動作するのはなぜですか? まで非アクティブになる理由は考えられません
LoadingProgressRing.IsActive = false;
コマンドが実行されます。