2016-10-02 77 views
0

我试图在启动时加载一些数据(从配置文件)。在win 10 uwp中访问文件的唯一方法是使用异步方法。UWP加载配置在启动

大,但:

如何can'I调用构造函数异步方法(这是不可能的,我知道)或任何等效。这是我的实际代码。

sealed partial class App : Application 
{ 

    public ITrackThatContext Context { get; private set; }   
    public App() 
    { 
     this.InitializeComponent(); 
     this.Suspending += OnSuspending; 

     Context = await LocalFileTrackThatContext.CreateAsync(null); 
    } 
} 

我可以调用从应用程序的第一页上的按钮的Context = await LocalFileTrackThatContext.CreateAsync(null);,但我敢肯定有做的比较好。是否有从启动过程启动任务的入口点?我读startup stages,但我不知道在哪里加载我的conf。

回答

1

虽然有可能是其他地方,最方便的是在您加载的第一页OnNavigatedTo方法。

编辑:如果你需要这个做只有一次,你可以有一个页面只有Frame里面从中然后导航至其他页面。或者你可以在某个地方存储一个布尔值,不管操作是否完成,并基于此操作。

+0

'OnNavigateTo'是不是异步?我是否误解了你的答案? – tschmit007

+0

@ tschmit007它可以异步就像你只是当你重写它添加单词异步任何其他方法。但构造函数不能是异步的,因为它们不是方法。 –

+0

@ tschmit007使用OnNavigateTo更好。 – lindexi

1

定义一个回调方法,并提供给Task.ContinueWith():

LocalFileTrackThatContext.CreateAsync(null).ContinueWith(contextLoaded); 

在这种情况下,构造函数应承担现场的其他信息尚未设置 - 任何需要等到上下文是已知会在回调中发生。

回调方法传递任务参数,它可以从那里获得。结果和.STATUS。

+0

ty用于在调用方法中避免异步的“astuce”。但是(还没有)我的解决方案 – tschmit007

+0

不使用构造函数中的读取文件。 – lindexi