2013-10-10 86 views
3

我有一個服務正在運行,服務將創建一個新線程來啓動一個進程。產卵將殺死其父母但進程仍然活着的新進程?

它開始將調用一個MSI將基本上停止原來的父服務

截至目前(也稱爲啓動該MSI的過程中服務)的過程中,進程死掉關閉導致MSI失敗在完成執行之前。

startInfo.FileName = "UpdateInstaller.exe"; 
startInfo.Arguments = "ParentServiceName.exe"; 
startInfo.UseShellExecute = true; 
startInfo.RedirectStandardOutput = false; //Edited as per comment below. Still wont work 

new Thread(() => 
{ 
    Thread.CurrentThread.IsBackground = true; 
    Process.Start(startInfo); 
}).Start(); 

有關如何運行此過程但保持活動狀態的任何想法,即使在父母死亡之後?

+0

你可以嘗試啓動它雖然像'「CMD UpdateInstaller命令行ParentServiceName.exe「'左右。 – AgentFire

+0

也許它有助於你改變'Thread.CurrentThread.IsBackground = false;' – progpow

+0

UpdateInstaller是exe文件? – progpow

回答

0

您的代碼啓動的此過程將在調用代碼死亡後保持打開狀態。在點的情況下 - 如果你有一個控制檯應用程序,它自然會離開這裏,記事本進程將繼續開放,它有「水漲船高」後:

static void Main(string[] args) 
    { 
     var startInfo = new ProcessStartInfo 
     { 
      FileName = "notepad.exe", 
      UseShellExecute = true, 
      RedirectStandardOutput = false 
     }; 

     new Thread(() => 
     { 
      Thread.CurrentThread.IsBackground = true; 
      Process.Start(startInfo); 
     }).Start(); 
    }