在后台辅助角色上运行的 C# 报表查看器.导出/打印锁定应用程序

本文关键字:导出 应用程序 锁定 打印 报表 后台 角色 运行 | 更新日期: 2023-09-27 18:31:11

我已经设置了我的报告列表,以便它通过后台工作者打开一个表单:

        if (bw_ReportWorker.IsBusy != true)
        {
            // start it
            bw_ReportWorker.RunWorkerAsync();
        }

在DoWork()中是这样的:

  private void bw_ReportWorker_DoWork(object sender, DoWorkEventArgs e)
    {
        _rl = new ReportList();
        _rl.ShowDialog();
    }

出现报告列表,然后您可以选择所需的报告。选择报表时,将打开适用于报表的另一个窗口。所有报告都正确显示在屏幕上,但是一旦我尝试打印或导出,应用程序就会挂起。如果我在不使用 BackgorundWorker 的情况下导出和打印报告列表,我可以导出和打印我想要的所有内容。为什么会挂起?以及如何解决这个问题?该程序在 Winforms 中与 .NET 4.5

谢谢

在后台辅助角色上运行的 C# 报表查看器.导出/打印锁定应用程序

正在从工作线程运行对话框。 这不是一个好的行为。 这就是 UI 挂起的原因。 唯一应该运行 Dialog(顺便说一下,它挂起打开窗体)的线程是 UI 线程。

如果要打开窗体而不挂起打开窗体的窗体,请使用 Show()