UWP Listview将应用程序冻结几秒钟

UWP Listview将应用程序冻结几秒钟,listview,uwp,loading,Listview,Uwp,Loading,当我导航到包含listview的框架时,我的应用程序在获取数据时会冻结几秒钟。我尝试在主菜单中显示正在加载的文本块,但在我的应用程序导航到包含listview的框架之前,它只在一瞬间开始显示 我有没有办法加快加载速度,或者在应用程序冻结之前显示加载消息 主菜单按钮 private void movies已单击(对象发送方,路由目标) { txtLoading.Visibility=可见性.Visibility; 帧导航(类型(MovieList)); } **listview页面的构造函数**

当我导航到包含listview的框架时,我的应用程序在获取数据时会冻结几秒钟。我尝试在主菜单中显示正在加载的文本块,但在我的应用程序导航到包含listview的框架之前,它只在一瞬间开始显示

我有没有办法加快加载速度,或者在应用程序冻结之前显示加载消息

主菜单按钮

private void movies已单击(对象发送方,路由目标)
{
txtLoading.Visibility=可见性.Visibility;
帧导航(类型(MovieList));
}
**listview页面的构造函数**

公共密封部分类电影列表:第页
{
私有电影视图模型vm;
公众电影演员()
{
初始化组件();
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility=AppViewBackButtonVisibility.Visible;
SystemNavigationManager.GetForCurrentView().BackRequested+=(s,e)=>
{
//把手压在后面
};
//vm包含加载到视图中的列表
vm=新的MoviesViewModel();
}
}
视图模型

公共类电影视图模型
{
公共ObservableCollection电影{get;set;}=new ObservableCollection();
private MovieService MovieService=新的MovieService();
公共电影视图模型()
{
movies=movieService.LoadMovies();
}
}

如果使用网络请求,例如
HttpClient
,则可以通过
HttpClient.GetAsync()
方法进行异步调用,这意味着当前UI线程不会被冻结

但是不能在构造函数中使用
wait
进行异步调用,因此建议不要将
LoadMovie
方法放在
movieswiewmodel
的构造函数中,而是创建一个新方法,然后在
movieswiewmodel
初始化完成后进行异步调用,像这样:

视图模型

公共类电影视图模型
{
...
公共异步任务LoadMovies()
{
movies=等待movieService.LoadMovies();
}
}
页面

公共密封部分类电影列表:第页
{
私有电影视图模型vm;
公众电影演员()
{
初始化组件();
//其他代码
}
受保护的异步重写无效OnNavigatedTo(NavigationEventArgs e)
{
vm=新的MoviesViewModel();
等待vm.LoadMovies();
}
}
有关异步编程的更多信息,您可以查看以下内容


致以最诚挚的问候。

如果您使用网络请求,例如
HttpClient
,您可以通过
HttpClient.GetAsync()
方法进行异步调用,这意味着当前UI线程不会被冻结

但是不能在构造函数中使用
wait
进行异步调用,因此建议不要将
LoadMovie
方法放在
movieswiewmodel
的构造函数中,而是创建一个新方法,然后在
movieswiewmodel
初始化完成后进行异步调用,像这样:

视图模型

公共类电影视图模型
{
...
公共异步任务LoadMovies()
{
movies=等待movieService.LoadMovies();
}
}
页面

公共密封部分类电影列表:第页
{
私有电影视图模型vm;
公众电影演员()
{
初始化组件();
//其他代码
}
受保护的异步重写无效OnNavigatedTo(NavigationEventArgs e)
{
vm=新的MoviesViewModel();
等待vm.LoadMovies();
}
}
有关异步编程的更多信息,您可以查看以下内容


致以最诚挚的问候。

尝试使LoadMovies异步。。。所以UI线程可以更新你的屏幕尝试使LoadMovies异步。。。因此UI线程可以更新您的屏幕