我正在创建STA线程,因为我基本上是在库中使用具有所需功能的UI组件,而实际上没有任何UI(将表导出到Excel)。
System.Threading.Thread thread = new System.Threading.Thread(() =>
{
_reportRunner.RunReport(report);
});
thread.SetApartmentState(System.Threading.ApartmentState.STA);
thread.Start();
thread.Join();
上面是发生魔术的地方,它运行良好,但是不能正确处理对象,并且由于其中一些数据表非常大,我遇到了巨大的内存泄漏。
我可以找到有关STA线程和内存泄漏的各种信息,但解决它们的方法却不多,总之有释放内存的方法,我尝试过手动强制垃圾回收器,但a)无效,b)我真的不想这么做。
我的应用程序实际上是一个控制台应用程序,看不到WPF。
我已经使用dotMemory内存探查器来了解这一点,我的应用程序正在使用8gb的内存,该内存打算在生成和导出报告后立即释放,但不会。
我正在使用具有导出功能的Dev Express WPFivotgridcontrol