我们有一个应用程序可以一直打印小型文件。这些文件是Crystal Reports。我们有大约10种不同的文档设计和布局。
CR没有数据访问,我们处理并将所有数据作为ArrayList传递给报表文档。
我们测量了PrintToPrinter函数中的大量滞后峰值。正如您在此图表中看到的,它们似乎随着时间的推移而增加:
蓝线显示PrintToPrinter在几秒钟内完成的时间。大部分时间不到1秒,但有时需要200秒。橙色线是应用程序启动的点。
有趣的是,我们也尝试使用ExportToDisk(PDF)更改PrintToPrinter,并且尖峰似乎以类似的模式发生。
这是使用ExportToDisk(PDF)的另一台计算机的图表:
其他一些信息:
用户报告说,当滞后开始发生时,他们可以“解冻”并将其打印出来"通过反复单击应用程序表面。
这些计算机上没有运行防病毒程序。
此问题无法在非生产环境中重现。我们只依赖于日志,但它似乎发生在不同的环境(Windows版本,打印机,PC)上。
我们尝试过缓存报表文档对象,它只在几台机器上产生了很好的效果,但通常更糟糕。
答案 0 :(得分:0)
根据你在这里所说的话,我认为"罪魁祸首可能不是Crystal Reports。"我认为您正在观察某种外部影响,与Crystal完全无关(或者很可能与其他任何"软件无关。"我建议您查看其他日志类型...系统日志。
在考虑这个最令人好奇的问题的根本原因时,我的第一直觉是"而不是太多很多信任"对于用户的报告,他们可以通过单击鼠标来取消它。 可以相关,但它可以很容易成为(母)红鲱鱼。 (当用户试图让计算机停止无响应时,他们要么敲击键盘,要么点击鼠标......)
显然,"如果有什么东西导致计算机等待超过两分钟,"某些东西可能某种:超时。可能在打印子系统的某个地方。在我看来,打印机子系统和/或那些的计算机的一般系统日志已经生成一些类型的消息或事件日志,可以进行匹配非常精确地说明这些问题发生的确切时间。