我正在尝试在启动时加载一些数据(来自配置文件)。在win 10 uwp中访问文件的唯一方法是使用异步方法。
很好,但是:
怎样才能在构造函数中调用异步方法(这是不可能的,我知道)或任何等效方法。这是我的实际代码。
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。
答案 0 :(得分:1)
虽然可能有其他地方,但最方便的是在您加载的第一页的OnNavigatedTo
方法中。
编辑:如果您只需要一个只有Frame
的页面就可以完成此操作,然后导航到其他页面。或者你可以在某处存储bool值,无论操作是否完成,并根据该行为进行操作。
答案 1 :(得分:1)
定义一个回调方法并将其提供给Task.ContinueWith():
LocalFileTrackThatContext.CreateAsync(null).ContinueWith(contextLoaded);
在这种情况下,构造函数的其余部分应该假设尚未设置Context - 任何需要等到Context已知的事件才会在回调中发生。
回调方法传递一个Task参数,它可以从那里得到.Result和.Status。