2016-10-02 17 views
0

起動時に(設定ファイルから)一部のデータを読み込もうとしています。勝利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メソッドです。

EDIT:これを1回だけ実行する必要がある場合は、その中にFrameという1つのページがあり、他のページに移動することができます。または、操作が完了したかどうかにかかわらず、bool値をどこかに格納して、それに基づいて動作させることができます。

+0

'OnNavigateTo'は非同期ではありませんか?私はあなたの答えを忘れていましたか? – tschmit007

+0

@ tschmit007他のメソッドと同じように非同期にすることができます。しかし、コンストラクタはメソッドではないので非同期であることはできません。 –

+0

@ tschmit007 OnNavigateToを使用する方が良いです。 – lindexi

1

するコールバックメソッドを定義し、Task.ContinueWith()にそれを提供します。この場合、

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

、コンテキストを想定する必要があり、コンストラクタの残りの部分は、まだ設定されていません - コンテキストがあるまで待機する必要があります何かを既知のコールバックが発生します。

コールバックメソッドにはTask引数が渡され、そこから.Resultと.Statusを取得できます。

+0

呼び出しメソッドで非同期を避けるための "astuce"があります。しかし、私のソリューションではない(まだ) – tschmit007

+0

コンストラクタでは、読み込みファイルを使用しません。 – lindexi

関連する問題