我的 Winforms 应用程序需要启动一个或多个非模态报表查看器窗口,然后主窗口开始其业务(包括打开模态对话框)。我在之前的文章中找到了下面的代码(由 H. Passant 编写):
private void button1_Click(object sender, EventArgs e) {
var t = new System.Threading.Thread(() => Application.Run(new Form2()));
t.SetApartmentState(System.Threading.ApartmentState.STA);
t.Start();
}
在我的例子中,“Form2”包含一个停靠的 ReportViewer 控件,设置为显示所需的报告 [new frmRptView(sReport, aRptParams)]。
在我的测试期间一切似乎都运行良好,但是当我向测试人员提供构建时,他们报告说查看器窗口有时会锁定,摆脱它们的唯一方法是注销或重新启动。我们在使用 form.Show() 时也遇到了同样的问题。
编辑:启动非模式窗口以使其独立于主应用程序窗口的正确方法是什么?