ReportViewer控件加载report导致UI响应变慢
昨天碰到一个很费解的问题。我们在程序里使用了ReportViewer控件,当调用了控件RefreshReport方法后,整个Application的UI响应都变得很慢。尝试将引用升级到ReportViewer 9.0,也不能解决问题。
排除了其他可能后,MSDN搜索ReportView + RefreshReport关键字,得知reportviewer存在一个bug,该assembly被加载后不能从app domain里正常的unload,有可能造成内存泄露。
一个workaround是在执行RefreshReport方法前先调用reportViewer.LocalReport.ExecuteReportInSandboxAppDomain() ,使其工作在一个独立的app domain里,避免影响进程的main app domain。
虽然内存泄露不是我们的情况,但还是尝试了一下,果然问题解决了,费解,不知道原因。