2017-06-29 3 views
1

ich zur Zeit zu lernen, wie Cross-Plattform-App entwickeln ich auf einen Fehler kam, ich weiß nicht, ob es Fehler ist oder nicht aber wenn ich versuche die Funktion GetStringAsync als Beweis zu verwenden in Bild unten es einen Fehler verursachen kann jemand bitte helfen?Xamarin Plattformübergreifender PCL GetStringAsync Fehler

hier ist der Code

protected override async void OnAppearing() 
{ 
    var client = new HttpClient(); 
    string a =await client.GetStringAsync("https://jsonplaceholder.typicode.com/posts"); 

    base.OnAppearing(); 
} 

für den PCL-Projekt I durch Nuget Microsoft.Net.Http und Android für Projekt hinzugefügt haben habe ich System.Net.Http

ich nur, dass, wenn Sie erkennen, hinzugefügt Download Microsoft.Net.Http in Ihrem Android-Projekt müssen Sie Microsoft.bcl.Build zuerst herunterladen, tat ich, dass BTW und immer noch das Problem bestehen.

+4

Sie haben in Ihrem Beitrag keinen Code oder Fehlermeldungen angegeben, wie können wir Ihnen möglicherweise helfen? Und bitte poste sie nicht als Bilder. – Jason

Antwort

1

async void ist für Event-Handler erlaubt. OnAppearing ist jedoch kein Ereignishandler. Es ist eine virtuelle Methode in der Basisklasse der Seite. Die gute Sache ist jedoch, dass die OnAppearing Methode tatsächlich vor dem Appearing Ereignis aufgerufen wird.

Also abonnieren Sie das Appearing Ereignis der Seite/Ansicht in der OnAppearing-Methode.

und rufen Sie Ihren Async-Code auf einem tatsächlichen geraden Handler, der nach aufgerufen wird.

HttpClient client = new HttpClient(); 
private async void Page_Appearing(object sender, EventArgs e) { 
    //...call async code here 
    var url = "https://jsonplaceholder.typicode.com/posts"; 
    var a = await client.GetStringAsync(url); 

    //unsubscribing from the event 
    this.Appearing -= Page_Appearing; 
} 
Verwandte Themen