【问题标题】:Silently start Crystal Reports静默启动 Crystal Reports
【发布时间】:2012-01-18 20:56:41
【问题描述】:

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

如何在我的应用程序启动时预先启动 Crystal Reports,以便更快地加载初始报表?我现在正在考虑这样做的方式是打开一个在开始时最小化的空报告,然后定时关闭它。

【问题讨论】:

  • 感谢 Otiel 进行了不必要的编辑,包括删除了“Thanks, Dave K”。然后删除我之前的评论,都是为了什么,只是想在你的名字旁边再获得一枚奖牌?下次您贡献并提供帮助时怎么样。
  • 首先,我不认为这是“不需要的编辑”。见meta.stackexchange.com/questions/2950/…。其次,您之前的评论(我假设您在谈论“使用 C#、WinForms、VS2010”)也是 trashing 您的问题,因为它已经出现在标签中,这就是标签的用途。我只是编辑了您的问题以使其更好,这就是它在 SO 上的工作方式。您应该接受它并看到该功能的优点。但是,如果您对我的编辑不满意,请随时将其回滚,这是您的权利,我不会被冒犯 :)
  • 顺便说一句,我不在乎我名字旁边的奖牌(这里称为徽章)。我很确定这次编辑不会让我更进一步赢得另一个徽章(也许在另一个200 edits or so)。至于“下次您如何贡献并提供帮助”,只需知道我是对您的问题进行投票和收藏的人,因为我遇到了同样的问题。现在有一个美好的一天;)
  • 好的,非常感谢您的解释,但这不会让我在以后的任何帖子中删除“谢谢”的礼貌。我看到开头的问候语有一个有效的参数,它是不需要的,并且确实从主页上显示的内容中减去以预览帖子。感谢您(或它的一些变体)将保留,因为我感谢我收到的任何帮助我发布的问题。所以,话虽如此,感谢您的意见 Otiel。

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


【解决方案1】:

在应用程序启动时在单独的线程上加载 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 文件也有助于提升用户体验

【讨论】:

  • 没有完全使用你给我的东西,但是感谢您的输入!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 2012-12-13
相关资源
最近更新 更多