【问题标题】:Xamarin Cross-platform PCL GetStringAsync errorXamarin 跨平台 PCL GetStringAsync 错误
【发布时间】:2017-06-29 17:59:53
【问题描述】:

我目前正在学习如何开发跨平台应用程序 遇到了一个bug,不知道是不是bug 但是当我尝试使用函数 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 首先,顺便说一句,我这样做了,但问题仍然存在。

【问题讨论】:

  • 您的帖子中没有包含代码或错误消息,我们应该如何帮助您?请不要将它们作为图片发布。

标签: c# xamarin async-await


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 2018-10-03
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多