2016-04-24 50 views
2

我正在用Prism開發UWP,當應用程序啓動時,它需要將文件從InstallLocation複製到LocalFolder,並在導航到MainPage之前確保文件在LocalFolder中存在。任何想法我怎麼能做到這一點?如何在UWP中爲Prism的OnLaunchApplicationAsync實現耗時的任務?

看起來像OnLaunchApplicationAsync可以返回一個任務,但它在任務完成之前先導航到MainPage。

protected override Task OnLaunchApplicationAsync(LaunchActivatedEventArgs args) 
    { 
     Task task = new Task(async() => 
     { 
      StorageFile dataFile = await Package.Current.InstalledLocation.GetFileAsync("xx.db3"); 
      await dataFile.CopyAsync(ApplicationData.Current.LocalFolder, "xx.db3", NameCollisionOption.FailIfExists); 
     }); 

     NavigationService.Navigate("Main", null); 
     Window.Current.Activate(); 

     return task; 

     //return Task.FromResult<object>(null); 
    } 

任何幫助表示讚賞。

+0

您需要在outter任務以'await'複雜的事情。 –

回答

1

這是怎麼回事?

protected override async Task OnLaunchApplicationAsync(LaunchActivatedEventArgs args) 
{ 
    StorageFile dataFile = await Package.Current.InstalledLocation.GetFileAsync("xx.db3"); 
    await dataFile.CopyAsync(ApplicationData.Current.LocalFolder, "xx.db3", NameCollisionOption.FailIfExists); 

    NavigationService.Navigate("Main", null); 
    Window.Current.Activate(); 
} 

沒有必要過分:-)

+0

@布萊恩,它是否按照你的意圖這樣工作? – Haukinger