C# 从多进程到多线程

C# 从多进程到多线程,c#,.net,multithreading,C#,.net,Multithreading,我最近加入了一个团队,负责改进一个已有5年历史的项目。 它是在考虑多线程的情况下开发的,但没有正确实现 该解决方案由多个Windows窗体程序组成(我们称之为Screen 1和Screen 2)。 屏幕1可以使用不同的参数多次启动屏幕2,但可以将其作为进程,而不是作为线程,任务,或使用BackgroundWorker启动 下面是如何做到的: public void RunProcess(Arguments Arguments,string ExcutableName) { Process

我最近加入了一个团队,负责改进一个已有5年历史的项目。 它是在考虑多线程的情况下开发的,但没有正确实现

该解决方案由多个Windows窗体程序组成(我们称之为Screen 1和Screen 2)。 屏幕1可以使用不同的参数多次启动屏幕2,但可以将其作为
进程
,而不是作为
线程
任务
,或使用
BackgroundWorker
启动

下面是如何做到的:

public void RunProcess(Arguments Arguments,string ExcutableName)
{
    Process Prc = new Process();
    Prc.StartInfo.FileName = ExcutableName;
    Prc.StartInfo.Arguments = Arguments.GetProcessArguments();
    Prc.Start();
    _ListProcess.Add(Prc);
}
这些进程保存在内存中,并在屏幕1关闭时终止


我想以一种更干净的方式重构它,采用“单进程”的方法。您有什么建议?

看起来您需要将屏幕2的逻辑移植到屏幕1项目中,然后用线程代码替换“流程”逻辑。

屏幕2是否有任何用户界面代码?看起来您应该在此处发布您的问题。当然,您不需要多流程环境?。您可能需要多个应用程序域。我们谈论的是前景线程还是背景线程?您是否协调了基于MDI或浮动窗口的解决方案?内存使用情况如何?。。。你应该提供更多的信息!我认为这不容易做到。这些程序有不同的入口点。它们可以通过屏幕1启动,也可以自行启动。