gpt4 book ai didi

c# - Xamarin Forms,使用异步来应用 ListView ItemSource

转载 作者:行者123 更新时间:2023-11-30 19:57:24 24 4
gpt4 key购买 nike

我目前正在使用 Xamarin Forms,我正在使用从 github RESTAPI 获得的 post 方法.每当我尝试将数据应用到我的 ListView ItemsSource 时,我的应用程序就会崩溃。

以下是当前执行的成功回调,它检索 JSON 并将其序列化并将其存储在名为 listData 的列表中。

public class Home : ContentPage
{
private ListView myListView;
private List<Person> listInfo = new List<Person> { };

RESTAPI rest = new RESTAPI();
Uri address = new Uri("http://localhost:6222/testBackEnd.aspx");

public Home ()
{
Dictionary<String, String> data = new Dictionary<String, String>();
rest.post(address, data, success, null);

Content = new StackLayout {
Children =
{
myListView
}
};
}

public void success(Stream stream)
{
DataContractJsonSerializer sr = new DataContractJsonSerializer(typeof(List<Person>));
listData = (List<Person>)sr.ReadObject(stream);
//myListView.ItemsSource = listData;
}
}

是不是因为它不是异步的,如果是这样我怎样才能使这个方法异步?我之前使用以下等待代码在 Windows Phone 8.1 上做过一个,是否有等效的 Xamarin Forms 可用?

async public void success(Stream stream)
{
DataContractJsonSerializer sr = new DataContractJsonSerializer(typeof(List<Person>));
listData = (List<Person>)sr.ReadObject(stream);
await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
myListView.ItemsSource = listData;
});
}

最佳答案

你可以这样试试:

      Task.Run(()=> {
downloadAllInformation();
Device.BeginInvokeOnMainThread( ()=> {
myListView.ItemSource = ...
});

});

通过这种方式,您可以异步管理 listView 的填充。

我已经用大量数据尝试过,性能更好。

关于c# - Xamarin Forms,使用异步来应用 ListView ItemSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30138018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com