问题描述
项目情况如下:程序业务:点击开始之后,从文件中获取数据,将数据显示到界面(按照某种可视化的形式)上,直到文件数据读完或者界面操作停止才会停止数据刷新 。
程序能正常运行,但是 , 当程序开始之后,拖拽、缩放窗体(WPF默认的窗体样式),界面假死,鼠标失去响应,也不能回到任务栏…可以通过按"Win"键恢复,但是恢复之后,界面有可能已经失去正常工作能力了——数据刷新不正确,时序不对等等问题 。
原因分析
通过使用VS自带的性能分析,可以看到:界面在刷新过程中CPU占用非常高(这个有可能是没有等待的While(true)死循环导致的),同时在执行界面赋值、操作UI元素时消耗的性能非常高(使用了传统的赋值方式和操作UI元素属性导致的,因为在WPF中能够操作UI元素的只有UI线程,这就导致了UI线程的工作负担非常繁重,以至于让界面假死或者不响应鼠标操作等) 。那么如何解决这个问题呢?
WPF中早已提供了非常便捷的实现方式来解决实时对UI元素的刷新 。它就是数据绑定 。下面我简单说下,为什么数据绑定可以解决这类问题 , 以及它带来的好处 。
解决方案
【MVVM模式WPF 窗口卡死或者假死解决方案】下面我就模拟上述问题来展示我的解决方法 。
使用代码的方式实现数据绑定 。
效果演示
文章插图
总结
既然使用到了WPF,那么数据绑定是不得不学的一课,而且要非常认真的学习 , 因为它将影响你在这个平台上走多远 。数据绑定可以概括为: 当数据源的属性值发生变化时,会主动通知UI元素展示最新的数据;同时,用户对控件的操作(修改)会直接修改数据源 。这种编程方式也被称为数据驱动 。
是一个非常强大的IDE,我们要学着使用VS提供的功能来帮助我们分析我们程序的性能 。从而找到问题,解决问题 。
Over
每次记录一小步…点点滴滴人生路…
- 泰拉瑞亚旅游模式什么意思 泰拉瑞亚旅途模式功能
- 泰拉瑞亚大师模式怎么开 泰拉瑞亚大师模式怎么开局
- 使命召唤手游什么时候出 使命召唤手游什么时候出剧情模式
- 抖音怎么设置商家模式 抖音怎么退出商家模式
- 手机qq浏览器怎么切换电脑模式 手机QQ浏览器怎么设置成电脑版
- dnf怎么解除安全模式微信 dnf怎么解除安全模式
- 中国模式识别与计算机视觉大会|多模态模型及图像安全的探索及成果
- ahci模式是什么 ahci 模式
- 生化危机8有佣兵模式吗 生化危机8村庄佣兵模式是什么
- 起亚仪表盘经济模式开还是关 起亚仪表盘eco怎么关闭