问题:
我们有一个Winforms应用程序,可以打开另一个WPF窗口。此窗口包含各种图标和文本,并不过分复杂。回到主窗口,winforms one,这也有一个使用ElementHost嵌入的WPF控件(ElementHost专门设计用于使Winforms能够托管WPF控件)。但是我们注意到,一旦这个应用程序的内存使用率很高,第二个WPF窗口可能需要相当长的时间才能打开。
我们在VS2012中制作了一个小型测试应用程序,可以复制问题。测试应用程序打开一个Winforms窗口,其中有两个按钮; "添加4GB的内存使用量"和"打开WPF窗口"。 WPF窗口上有一个小图标(48 * 48),就是这样。 当我们添加4Gb内存使用并尝试第一次打开窗口时,打开窗口大约需要7秒钟。
代码:我已通过BitBucket公开提供测试应用和源代码。
我们发现的事情:
是否有其他人遇到过此问题/有关我们下一步可能是什么的任何建议?
答案 0 :(得分:4)
使用分析器进行更多分析之后,this文章似乎与我遇到的问题相同。
typeof(BitmapImage).Assembly.GetType("MS.Internal.MemoryPressure")
.GetField("_totalMemory", BindingFlags.NonPublic | BindingFlags.Static)
.SetValue(null, Int64.MinValue / 2);
不是最好的解决方案,但它确实解决了问题。