2016-10-02 2 views
0

Ich versuche, einige Daten (aus einer Konfigurationsdatei) beim Start zu laden. Der einzige Weg, Datei in win 10 uwp zuzugreifen, ist die Verwendung der asynchronen Methode.uwp lade Konfig von einer Datei beim Start

Großartig, aber:

Wie in einem Konstruktor ein asynchrones Verfahren can'I nennen (das nicht möglich ist, ich weiß) oder ein gleichwertiges. Hier ist mein tatsächlicher Code.

sealed partial class App : Application 
{ 

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

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

kann ich die Context = await LocalFileTrackThatContext.CreateAsync(null); von einer Schaltfläche auf der ersten Seite der App aufrufen, aber ich bin sicher, es besser zu machen ist. Gibt es einen Einstiegspunkt für den Start einer Aufgabe vom Startvorgang. Ich lese startup stages, aber ich kann nicht herausfinden, wo ich meine Conf laden.

Antwort

1

Während es andere Orte geben könnte, ist die bequemste in OnNavigatedTo Methode der ersten Seite, die Sie laden.

EDIT: Wenn Sie dies nur einmal tun müssen, können Sie eine Seite mit nur Frame darin haben, von der Sie dann zu anderen Seiten navigieren. Oder Sie können irgendwo einen Bool-Wert speichern, unabhängig davon, ob die Operation abgeschlossen ist oder nicht, und basierend darauf agieren.

+0

'OnNavigateTo' ist nicht asynchron? Habe ich deine Antwort missverstanden? – tschmit007

+0

@ tschmit007 Es kann async sein wie jede andere Methode, die Sie einfach ein Wort async hinzufügen, wenn Sie es überschreiben. Konstruktoren können jedoch nicht asynchron sein, da sie keine Methoden sind. –

+0

@ tschmit007 Verwenden Sie die OnNavigateTo ist besser. – lindexi

1

eine Callback-Methode definieren und zu Task.ContinueWith liefern():

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

In diesem Fall wird der Rest des Konstruktor soll Kontext übernehmen noch nicht festgelegt - alles, was bis Kontext muss warten, ist bekannt wird im Callback passieren.

Die Callback-Methode wird ein Task-Argument übergeben, und es kann .Result und .Status von dort erhalten.

+0

ty für die "astuce" der Vermeidung von Async in der aufrufenden Methode. Aber (noch) nicht meine Lösung – tschmit007

+0

Die gelesene Datei nicht im Konstruktor verwenden. – lindexi