Xamarin跨平台PCL GetStringAsync错误

时间:2017-06-29 17:59:54

标签: c# xamarin async-await

我目前正在学习如何开发跨平台应用 我遇到了一个错误,我不知道它是不是错误 但是当我尝试使用函数GetStringAsync时,如下图所示 它引起了任何人都可以帮忙的错误吗?

这是代码

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

    base.OnAppearing();
}

我通过Nuget Microsoft.Net.Http添加的PCL项目 对于Android项目,我添加了System.Net.Http

我只是意识到,如果你想下载Microsoft.Net.Http 在您的Android项目中,您需要下载Microsoft.bcl.Build 首先,我做了那个BTW,但问题仍然存在。

1 个答案:

答案 0 :(得分:1)

事件处理程序允许

async void。但是OnAppearing不是事件处理程序。它是页面基类的虚方法。但好的是OnAppearing方法实际上是在Appearing事件之前调用的。

所以订阅OnAppearing方法中页面/视图的Appearing事件。

protected override void OnAppearing() {
    this.Appearing += Page_Appearing;
}

并在实际的偶数处理程序上调用异步代码,该处理程序在之后调用。

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;
}