2011-08-12 46 views
0

這個問題很奇怪。我從來沒有遇到過像這樣的事情。 我想讓我的程序使用7zip提取文件。我之前在其他程序中完成過這個任務,並且從未太困難。所以我複製並粘貼我的代碼:C#程序在運行其他進程後退出

Process process = new Process 
{ 
    StartInfo = 
    { 
     CreateNoWindow = true, 
     WindowStyle = ProcessWindowStyle.Hidden, 
     FileName = "7za.exe", 
     UseShellExecute = false, 
     ErrorDialog = false, 
     Arguments = "x -y -o\"" + outputPath +"\" \""+ inputFile +"\"", 
     RedirectStandardOutput = false, 
    } 
}; 
process.Start(); 

此代碼運行後立即終止我的應用程序。它只是消失。這當然不是爲了!我用這個步驟進入功能並運行它。只要process.Start();完成程序關閉並將我返回到Visual C#。它沒有運行任何Application.Exit();或任何東西,它只是走開了。在Visual C#中沒有任何錯誤等待我。 所以我嘗試添加一個MessageBox.Show("Test");到最後。在步進模式下運行。 process.Start();沒有問題,只要它執行了MessageBox代碼,它就會再次消失。我甚至沒有點擊消息框中(這表明了對約0.2秒時停止應用程序之前)的Process.Start()之後)

+0

您是否收到異常? 'Process'可以拋出它們,你知道... – Oded

+0

你需要WaitForExit()... –

回答

3

那麼,如果這代碼在Main()中,那麼當代碼執行完畢後它就會結束。你能發佈完整的代碼包含這段代碼嗎?

可以等待的過程中通過包括

process.WaitForExit(); 

檢查ExitCode可能會告訴你,如果你的程序成功完成。而且你總是可以重定向StandardError來檢查它的輸出。

process.StartInfo.RedirectStandardError = true; 
string error = process.StandardError.ReadToEnd(); 
+0

我嘗試過WaitForExit,它仍然消失,它是一個Windows窗體應用程序,所以它不應該終止。我試着嘗試catch語句,沒有發現錯誤。無論如何,我想我已經提出了錯誤的問題。我會將您的答案標記爲最佳答案,因爲它的錯誤無效。 –

+0

你能解釋一下這個問題嗎?那樣的話,那些發現這個問題的人不會被置於黑暗中尋求解決方案。 – Stijn

+0

我相信這對我來說相當具體。我正在將文件解壓到我有一個FileSystemWatcher指向的位置,這是導致此錯誤的位置:http://stackoverflow.com/questions/5195086/application-just-closes-no-error-or-smth - 當-運行從VS2010 –

1

嘗試process.WaitForExit(好吧......

+0

你仍然需要調用Start()。 –

+0

編輯我的答案。感謝Peter Kelly – robertpnl