既にタスクがTask.WhenAll
あるため、すべてのタスクの実行が完了したら、メソッドを使用してアクションを実行できます。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Task.WhenAll(task1, task2, task3).ContinueWith(_ =>
{
this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
}, TaskScheduler.FromCurrentSynchronizationContext());
}
注: ナビゲーションは、UI スレッドからのみ呼び出すことができます。パラメータは現在の同期コンテキストをキャプチャしますが、UI スレッドからメソッドTaskScheduler.FromCurrentSynchronizationContext()
を呼び出した場合にのみ機能します。Task.WhenAll
それ以外の場合は、ディスパッチャーを使用する必要があります。
Task.WhenAll(task1, task2, task3).ContinueWith(_ =>
{
Dispatcher.BeginInvoke(() => this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)));
});