【发布时间】:2020-02-25 08:40:30
【问题描述】:
我们公司有一个用 C# + WPF + XAML 编写的产品(程序)。这对我们来说是一个相当重要的程序,我们的许多客户已经安装了它。但在切换到 Framework 4.7.2 后,我们注意到性能大幅下降。然后我们改到了 4.8 版本,但是程序运行起来还是很慢,尤其是视觉部分。
在我们的程序中,我们显示来自大量传感器(运动传感器、温度、光量等)的数据。我们不断收到我们处理的新数据,保存到 SQL Server 2014/2017 数据库,然后客户端程序将这些数据可视化。
服务器部分和通信虽然复杂,但即使在功能不太强大的计算机上也能正常工作。但是我们在客户监视器上显示数据时遇到了一个非常大的问题。
程序的结构如下:客户在他想看到这些数据的地方画图。例如,他有黑色背景,用线条画出他的工厂。这家工厂的不同地方都有传感器,他在这些地方画了它们。然后他开始扫描并查看他绘制标签的数据结果。数据少的时候不是很明显,但是数据多的时候鼠标在数据之间移动就被禁止了,客户端看到程序一直在变慢,需要等几秒,make用鼠标进行一些移动,然后再次等待程序响应。如果你一次做几件事,那么程序就好像冻结了一样。不是这样,但感觉程序现在将停止工作。
我尝试使用调试和测量 CPU 和 RAM,但它实际上对我没有任何帮助。数据通常通过 Web 服务从服务器下载到客户端程序,并根据需要占用尽可能多的内存。很难以某种方式对其进行优化。但是当我们开始向用户展示这些数据时,一切都开始变得很糟糕。如何优化数据可视化,让用户继续冷静地使用程序?很乐意接受任何建议。
我所做的对改进 DataGrid 表中的虚拟化有所帮助。对用户来说稍微好一点,但这还不够,您还需要其他东西,尤其是绘制的部分,并在不同位置显示带有数据的标签。
【问题讨论】:
-
请与我们分享一些细节,例如代码和性能指标,让您的问题更加具体
-
你之前用的是什么框架版本?
-
@Edgaras 首先我们使用 Framework 4.5,而不是 4.6 并且正常工作。但是4.7.2之后性能会变差。
标签: c# sql-server wpf web-services xaml