2014-10-30 80 views
0

我最近加入了一个负责改进现有5年计划的团队。 它是在考虑多线程的情况下开发的,但未正确实施。从多进程到多线程

该解决方案由多个Windows窗体程序组成(我们称之为Screen 1和Screen 2)。 屏幕1可以使用不同的参数多次启动屏幕2,但将其启动为Process,而不是Threads,Tasks或使用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点关闭。

我想以更简洁的方式重构这个过程,采用“单一过程”方法。你会建议什么?

+0

屏幕2是否有任何用户界面代码? – Brian 2014-10-30 15:48:01

+0

看起来您应该在http://codereview.stackexchange.com/上发布您的问题 – 2014-10-30 15:48:43

+0

您确定,您不需要多进程环境?您可能需要多个应用程序域。我们在谈论前景还是后台线程?你有没有简要介绍一个基于MDI或浮动窗口的解决方案?内存使用情况如何?...您应该提供更多输入方式! – Jaster 2014-10-30 15:54:10

回答

2

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

+0

我不认为这可以轻松完成。这些程序有不同的入口点。它们可以通过Screen 1或自己启动。 – Keysharpener 2014-10-30 15:54:13