默默地启动Crystal Reports

时间:2011-12-12 22:04:23

标签: c# winforms visual-studio-2010 crystal-reports

我有一个使用Crystal Reports显示在各种表单上输入的信息的应用程序。此应用程序适用于各种性能规格的各种笔记本电脑。在某些笔记本电脑上,Crystal Reports在显示第一个报告之前可能需要30秒以上,之后它们通常会更快打开。

如何在应用程序启动时预启动Crystal Reports,以便更快地加载初始报告的加载时间?我现在考虑这样做的方式是在开始时打开一个空的报告,然后将其计时关闭。

1 个答案:

答案 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文件也有助于提升用户体验