我有一个应用程序,使用Crystal Reports显示各种表单上输入的信息。这个应用程序安装在各种性能规格的客户笔记本电脑上。在某些笔记本电脑上,Crystal Reports可能需要30秒以上才能显示第一份报告,然后它们通常会更快地打开。
如何在我的应用程序启动时预先启动Crystal Reports,以便初始报告的加载时间更快?我现在考虑的方法是在启动时打开一个空报告并将其最小化,然后计时关闭。
我有一个应用程序,使用Crystal Reports显示各种表单上输入的信息。这个应用程序安装在各种性能规格的客户笔记本电脑上。在某些笔记本电脑上,Crystal Reports可能需要30秒以上才能显示第一份报告,然后它们通常会更快地打开。
如何在我的应用程序启动时预先启动Crystal Reports,以便初始报告的加载时间更快?我现在考虑的方法是在启动时打开一个空报告并将其最小化,然后计时关闭。
//preload crystal reports on a seperate thread
Task.Factory.StartNew(() =>
{
try
{
using (ReportDocument preloadCrystalReport = new ReportDocument())
{
preloadCrystalReport.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Reports/Report.rpt"));
PrintPreview preloadCrystalGUI = new PrintPreview().Init(preloadCrystalReport);
preloadCrystalGUI.Dispose();
}
}
catch (Exception e)
{
\\log exception
}
}, TaskCreationOptions.LongRunning);
在我的情况下,PrintPreview类是一个带有CR控件嵌入其中的对话框。预加载时,我不显示该对话框。
我发现预加载.rpt文件还有助于提高用户体验。