我有一个难题。我“继承”了一个设计非常糟糕且非常复杂的系统,我正在(与我的团队)一块一块地对其进行现代化和重建。问题是当前系统依赖于 200 多个用户,并且由于(缺乏)设计,他们在性能方面存在重大问题。目前最有问题的问题是大量工作被放置在 UI 线程上,这导致 GUI 挂起,直到线程被清除并且消息泵可以继续。大部分工作实际上确实需要在 GUI 线程上进行,因为由于其他线程上的其他计算结果,它正在更新网格中的大量字段。
问题是这样的:我没有资源专门用于重写这里涉及的线程模型和底层类,而且这项工作的复杂性会带来很大的风险,这对我的客户来说是不可接受的。
我想知道是否有人对如何在不过多干扰当前线程模型的情况下提高 UI 性能有任何建议。
我最初的想法是,可能有一些方法可以在对 UI 线程的实际调用之前放置一个“缓冲区”,以确保 GUI 不会过载,或者当它确实退回到它的调度时。
任何建议将不胜感激。
我知道这一切都不是理想的,但我们就是我们现在的位置,我真的想在一年的重写完成之前给我的用户一个更好的体验!
谢谢!
更新 #1 这是一个 winforms 应用程序...抱歉,一开始并不清楚。新代码是 WPF,但这些模块是 winforms。
更新 #2 我想我最初可能会尝试将对 UI 线程的大多数 BeginInvoke 调用更改为 Invoke,引入一个有望提高 UI 响应能力的序列化。这里有任何(非显而易见的)缺点,任何人都可以预见?