我有一个带两个窗口的WPF应用程序。一个窗口包含一个WebBrowser控件。另一个窗口包含一个WindowsFormsHost,它托管一个用于绘制折线图的WinForms Chart控件。我尝试使用WPF Toolkit提供的图表,但内存消耗正在增加。我正在使用javascript显示本地HTML文件,以在Google地图上显示位置。该位置每100毫秒更新一次。除了位置,还会收到一些其他数据,我必须在折线图上显示。
在测试时,我观察到图形和浏览器都以500毫秒的间隔同时更新。但是当频率更改为100毫秒时,浏览器将停止更新。还观察到,如果图表上的数据绘图停止,浏览器会重新加载,并且位置正在更新。
关于问题可能是什么的暗示?
答案 0 :(得分:1)
这听起来像是更新图表的非常繁忙的主线程(UI 线程)导致 Web 浏览器控件无法更新主线程的经典示例。或者,如果除了主线程之外,您有单独的线程来更新图表和 Web 浏览器,那么与更新 Web 浏览器的 I/O 延迟相比,更新图表的 I/O 延迟同样较短,因此图表更新线程是饿死网络浏览器更新。即使 web 浏览器更新和图表更新来自不同的线程,而不是 UI 线程,一个线程可能会饿死另一个线程。解决这个问题的方法太多了,这里就不一一列举了。您只需要确保更新图表和 Web 浏览器控件的线程有一个平衡/平等的机会来获得一个时间片来做他们的事情。