2017-03-21 3 views
0

Wie sollte ich auf eine Aufgabe in DidFinishedLaunchingWithOptions warten, die keine Signatur zurückgibt?Xamarin iOS: Async/Warten auf DidFinishedLaunchingWithOptions

Ich muss auf eine Initialisierungsaufgabe eines DataManagers von meinem PCL im plattformspezifischen Projekt warten. Im Android-spezifischen Projekt kann ich den Modifikator async zu der Hauptmethode hinzufügen, die void zurückgibt. Aber die iOS-Hauptmethode gibt bool zurück.

Antwort

1

@apineda ist völlig richtig, dass Sie sollten nicht dabei sein. Wenn Sie jedoch HABEN zu ...

können Sie rufen .GetAwaiter() und .GetResult() auf Ihrer Aufgabe.

Beispiel:

... 
public Task<string> GetSomeStringAsync(); 
... 
var myString = GetSomeStringAsync().GetAwaiter().GetResult(); 
... 

Dann werden Sie die Daten, die Sie brauchen. Passen Sie auf, dass Sie Ihre 17-Sekunden-Zeitüberschreitung nicht unterbrechen!

+0

Vielen Dank für Ihre sofortige Antwort. Ich werde die Init innerhalb der PCL Application Klasse tun. –

3

Sie sollten keine Initialisierung in dieser Methode erwarten, da diese eine begrenzte Zeit hat, zurück zu antworten, was, wenn ich nicht falsch bin, ist es 24 Sekunden. Nach dieser Zeit wird Ihre Anwendung vom System gelöscht.

Ich mache stattdessen Vorschlag, einen "Splashscreen" als ersten ViewController hinzuzufügen, wenn Sie dies im plattformspezifischen Projekt machen müssen. Dort können Sie jede Initialisierung vornehmen und sogar einige nette Animationen hinzufügen, um den Benutzer zu informieren. Oder Sie können diese Initialisierungsseite im Xamarin.Forms-Projekt haben und von dort auf die aktuelle MainPage wechseln, sobald die Initialisierung abgeschlossen ist.

+0

Vielen Dank für Ihre sofortige Antwort. Ich werde die Init in der PCL in der Application-Klasse tun. –