【问题标题】:async on page load in xamarin.formsxamarin.forms 中的页面加载异步
【发布时间】:2015-03-21 11:41:55
【问题描述】:

我目前正在开发一个基于 Master Detail 模板的小型应用程序。我的Pages 之一需要立即加载一些数据,我不知道该怎么做。在每个示例中,一旦用户按下按钮,就会加载数据。

这是我当前的代码:

string test = async (sender, e) => {

    Task<string> json = GetRandomRelations ();
    return await json;
};

还有我的方法

public async Task<string> GetRandomRelations () {

        var client              = new System.Net.Http.HttpClient ();
        client.BaseAddress      = new Uri("http://127.0.0.1/loltools/web/app_dev.php/api/relation/");
        string response         = await client.GetStringAsync("random/20");

        return response;
    }

我目前只是试图获得 json 响应,但我什至无法做到这一点...我的主要问题是我无法将 lambda 表达式转换为字符串...

感谢您的帮助!

【问题讨论】:

    标签: c# asynchronous xamarin


    【解决方案1】:

    我的一个页面需要立即加载一些数据,我不知道该怎么做。

    考虑一下。您真正要问的是如何调和两个相反的要求:

    1. 页面必须立即显示一些数据。 UI 必须是响应式的。数据必须可以同步显示。
    2. 数据是异步检索的。它不能立即使用。甚至获取要显示的数据也需要一些(未知)时间。

    所以,显然,没有直接的解决方案。相反,您必须以不同的方式同时满足两个核心要求(“UI 必须是响应式的”和“数据是异步检索的”)。一种常见的方法是(立即和同步地)显示数据的“正在加载...”视图 - 微调器或诸如此类。然后,当数据到达时更新显示。

    【讨论】:

    • 是的,我目前正在我的页面中显示一个加载器,但我不知道如何编码。你有什么例子吗?
    • @solarBanana:我从未使用过 Xamarin Forms,但我认为 INotifyPropertyChanged 应该可以解决问题。
    【解决方案2】:

    我不确定您要做什么,但简单地说有什么问题:

    string test = await GetRandomRelations ();
    

    【讨论】:

    • 为了使用await,它需要一个async 方法。似乎不是页面上默认存在的async void PageFinishedRendering() 方法。
    猜你喜欢
    • 2015-01-17
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    相关资源
    最近更新 更多