2014-10-30 83 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