我有一个使用Crystal Reports显示在各种表单上输入的信息的应用程序。此应用程序适用于各种性能规格的各种笔记本电脑。在某些笔记本电脑上,Crystal Reports在显示第一个报告之前可能需要30秒以上,之后它们通常会更快打开。
如何在应用程序启动时预启动Crystal Reports,以便更快地加载初始报告的加载时间?我现在考虑这样做的方式是在开始时打开一个空的报告,然后将其计时关闭。
答案 0 :(得分:4)
当应用程序启动时,在一个单独的线程上加载CR为我工作。
//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文件也有助于提升用户体验