【发布时间】:2018-05-07 09:05:34
【问题描述】:
我们有一个 WPF 项目,它使用 ReportViewer (2010) 创建了一些报告(22 个),所有这些报告都有超过 100 页和非常复杂的布局。现在我们需要一个 Windows 服务来每天自动创建这些报告。
我创建了服务,使用完全相同的逻辑,创建了安装程序并构建了它,但是,当我执行时,服务只保存了 14 个报告并且它抛出了这个异常:
Win32Exception: Error creating window handle
(我的VS是葡萄牙语的,这是给你们的翻译:)
我注意到进程的 RAM 使用率急剧上升,在调用异常时达到了 570MB。
我认为创建报告的逻辑可能有问题,所以我创建了一个控制台应用程序项目来调用该方法,它工作得很好。
我的疑惑是:
1) 是否有可能对服务的 RAM 使用有限制,是否有必要在每次保存报告后清除内存? (如果是,我怎样才能清除内存?我加入了电话GC.Collec();但没有成功)
2) ReportViewer(一个 Windows.Form 组件)是否可能与 Windows 服务组件中的某些内容发生冲突,从而导致错误?
向大家致以最诚挚的问候
【问题讨论】:
-
我猜想在服务应用程序中使用
ReportViewer可能是个坏主意。我确信有更好的方法来生成不依赖于 UI 组件的报告。 -
由于缺少 RAM,我们遇到了类似的问题。使用 x64 平台可能会有所帮助。
-
我同意@DavidG,但确实有必要每天自动更新所有报告(老板订单),我不确定我是否可以更改
ReportViewer的东西:( -
使用 x64 平台 @Ugur ?你能解释一下吗?
-
@GuilhermeGolfetto 我的意思是从 32 位系统切换到 64 位系统可能有助于增加代码/程序的虚拟内存空间。
标签: c# wpf windows-services reportviewer