C# 如何在单独的线程中打开第二个UI

C# 如何在单独的线程中打开第二个UI,c#,multithreading,C#,Multithreading,我正在与一个团队合作开发一个应用程序,该应用程序有一个报告生成器,然后是一个报告查看器。目前,我们还无法在单独的线程中打开报表查看器。这两个应用程序在打开后应该是独立的,如果一个应用程序关闭,则不会影响另一个应用程序 报表查看器有一组文件的UI,主UI有另一组文件。我的问题是,一旦主UI回到“空闲”状态(不隐藏,不处理任何内容),我们如何在单独的线程中打开查看器UI 任何简短的代码片段都会很有帮助,此时我完全不知道如何在新线程中打开查看器…可能是这样的: private void MethodN

我正在与一个团队合作开发一个应用程序,该应用程序有一个报告生成器,然后是一个报告查看器。目前,我们还无法在单独的线程中打开报表查看器。这两个应用程序在打开后应该是独立的,如果一个应用程序关闭,则不会影响另一个应用程序

报表查看器有一组文件的UI,主UI有另一组文件。我的问题是,一旦主UI回到“空闲”状态(不隐藏,不处理任何内容),我们如何在单独的线程中打开查看器UI


任何简短的代码片段都会很有帮助,此时我完全不知道如何在新线程中打开查看器…

可能是这样的:

private void MethodName {
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ThreadProc));
        t.Start();
}
ThreadProc
代码将如下所示:

public static void ThreadProc()
    {
        Application.Run(new Application_Name());            
    }
MethodName(对我来说)实际上是

serverToolStripMenuItem_Click(object sender, EventArgs e)
因为它是一个事件驱动的代码

Application\u Name
将是您要运行的表单或应用程序


希望这能有所帮助。

为什么它们不能成为独立的可执行文件?为什么需要它们位于不同的线程中?它们基本上是独立的,但仍然有相同的UI线程,只要代码的其余部分遵守正常的线程规则(因此不会占用UI线程)。类似的帖子:我建议您将它们分开处理(即两个不同的可执行文件),并让生成器启动查看器[可能]使用必要的命令行参数查看报告。在不同的线程上运行UI组件是困难的,如果不是危险的话,Windows并不是真正设计用来做这些事情的。你的
ReportViewer
难道不能只是另一个
表单
,它与
表单一起显示。从主表单显示
?你不需要一个单独的线程来完成这个任务。都铎注意到你可以给我们一个
Form.Show()事件打开另一个窗体,同时保持旧窗体打开或隐藏它。如果需要将其单独线程化,
Form.Show()对此不起作用,但它是一种与表单交互的平滑方式。