2013-07-16 28 views
1

我有一個表格(MainForm)MainForm有一個按鈕,可撥打Editor.exe。 exe文件呼叫者代碼顯示在下面:如何關閉子進程而不影響父進程

private void InsertEquaButtonClick(object sender, EventArgs e) 
{ 
    Process p = Process.Start(Editor.exe); 
    string test = p.ProcessName; 
    p.WaitForExit(); 
} 

Editor.exe是一個單獨的可執行的文件,它提供了一個用戶輸入形式;用戶在該窗體中輸入一個圖像文件後,點擊確定按鈕,關閉該圖像並放入MainForm。

這裏是OK按鈕的代碼:

....... 
encoder.Save(s);// Save image to MainForm 

var processes = Process.GetProcessesByName("Editor"); 
foreach (Process proc in processes) 
{ 
    proc.CloseMainWindow(); // Propblem is here 
    // proc.Close(); 
} 
..........   

的問題是,當我點擊編輯OK按鈕,所有的應用程序(MainForm,然後Editor.exe)關閉。

那麼,如何殺掉Editor.exe(Child Process)而不殺死MainForm進程(Parent Process)呢?

我一直嘗試:

proc.close() 

pro.Kill() 

... 

,但他們沒有工作。

非常感謝您的幫助。

+1

出於好奇,爲什麼要調用一個完全獨立的可執行文件,而不是讓編輯器作爲項目/解決方案的一部分?另外,你有沒有在斷點中檢查'processes'的內容? – Logarr

+1

爲什麼你需要手動關閉進程?你不能在OK按鈕處理程序中執行'this.Close()'嗎? –

+0

@Logarr:因爲Editor.exe是另一個我不能放到我的項目中的項目。當我在進程內容編輯器進程和MainForm進程中調試時。但是當我關閉編輯器進程然後mainform進程立即關閉 – tiendv

回答

1

的問題,因爲使用線程我的夥伴ourproject跑得更快,所以當我在編輯器中它關閉關閉過程線程。 ....這是有問題的原因 謝謝