我们有一个承载Crystal Reports Viewer控件(版本XI)的.NET Winforms应用程序。它在大多数情况下运行良好,但是当执行从查看器导出数据时,应用程序将在退出时以及非托管代码中崩溃。错误消息不是很有用,只是说访问了不正确的内存位置。没有提供其他信息,例如特定的DLL等。
这只发生 后,使用查看器将报表导出为CSV,XML等。我的猜测是,在导出过程中的某个时刻,Crystal会创建一个资源,尝试关闭时执行操作到一个不再存在的父窗口(可能)。
我已经看到了一些内存泄漏并关闭了Crystal的问题,但这个是新的。有没有人看到它并提出解决方法或有解决方法的想法?
到目前为止,我们已经尝试明确处理所有与晶体相关的对象,设置为null,甚至在关闭时设置Thread.Sleep循环以“给予Crystal时间清理。”
更新
答案 0 :(得分:-1)
检查代码以确保在应用程序的生命周期内只打开一次Crystal Application对象。这将防止过多的内存使用,可能导致崩溃的使用。显然,您可以随意打开和关闭报告。