我有一个WPF应用程序,但是它运行得很慢。
首先,这与渲染无关。渲染非常简单,而且我使用了WPF性能工具包进行了检查 - 没有问题。
其次,这也不是我的代码的问题。单位测试很快,并且如果我将所有DataTemplates替换为空模板,则一切都可以快速运行。
到目前为止,看起来问题出在模板实例化上。也就是说,在启动应用程序并打开一些复杂的屏幕时,需要很长一段时间。当我说"很长一段时间"时,我的意思是"真的很长"。有时可能高达3-5秒 - 例如,在有100行的数据网格中。但是,当您转到另一个选项卡,然后返回到相同的屏幕时,它会快速打开(只要其视图模型保持不变)。
这非常令人恼火,不仅因为它运行缓慢,而且因为我无法解决它。如果我对速度有一些控制,我可能可以显示一些"正在打开,请稍候"之类的消息...
此外,当我查看其他一些WPF应用程序(尤其是ILSpy)时,它们似乎运行得相当快,尽管存在大量数据。这使我相信我可能做错了什么。但是我不知道从哪里开始。
有什么想法吗?有什么经典的错误吗?有什么提示吗?
Main()
方法。这就是WPF的工作原理:它发现需要显示某个对象(通常是响应鼠标点击而激活选项卡),然后在其字典中检索该对象类型的模板,并实例化该模板。所有这些都在不接触我的代码的情况下发生。我所做的一切只是填充这些字典并创建要显示的原始对象。但这已经发生得很早了,在程序的起始阶段。而且速度很快。 - Fyodor Soikin