wpf卡死不响应任何交互

wpf卡死不响应任何交互,第1张

多线程;

public MainWindow()

{

InitializeComponent()

Loaded += MainWindow_Loaded

}

private async void MainWindow_Loaded(object sender, RoutedEventArgs e)

{

//Thread.Sleep(3000)

//lblMsg.Content = "完成"

var result = await Task.Run(() =>

{

Thread.Sleep(3000)///耗时 *** 作

return "完成"

})

lblMsg.Content = result//更改UI *** 作

}

c# wpf listview虚拟化后还是卡顿解决方法如下:

1、使用Adapter提供的convertView,convertView是Adapter提供的视图缓存机制,当第一次显示数据的时候,adapter会创建n个(n等于页面可见的item的数目)convertView,当下次需要显示新的item的时候,adapter会循环利用这些已经创建的convertView,减少再次创建convertView所带来的开销,从而达到性能的提升。

2、使用自定义的视图缓存

就是自定义一个视图缓存类,在这个类中保存我们在item中使用到的视图的引用,通过convertView的setTag方法和getTag方法来存储这个视图缓存类引用和重新获取这个视图缓存类引用,其目的也是为了减少重复创建视图时的开销。

3、减少不必要的视图更新

ListView在滚动时会请求重新获取item,来显示不同内容的item,而如果在获取item时比较耗时就会造成在滚动时出现卡顿的现象。那我们可以通过监听ListView的滚动事件来使ListView处于不同的滚动状态时做不同的事情,比如在ListView处于滚动过程中加载少量的显示数据,当ListView处于空闲的状态时再加载所有的数据,这样就可以减少ListView在滚动过程中的开销,从而提高ListView的滚动速度。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11705495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存