等待进程终止或停止然后从服务重新启动

时间:2014-08-04 08:51:41

标签: c# windows process waithandle

在我的C#应用​​程序中,我要求服务将持续监视进程。如果进程被某种方式或用户停止或停止,则必须启动它。该服务将启动/重新启动该过程。 我可以管理从进程启动exe,如果进程被用户杀死,或者服务将重新启动进程。但我这里有一个问题。

我是怎么做的就像这样

string ProcessName = "Notepad++";
String appName = @"C:\Program Files (x86)\Notepad++\Notepad++.exe";
System.Diagnostics.Process[] proc = System.Diagnostics.
                                    Process.GetProcessesByName(ProcessName);

if (proc.Length > 0)
{
}
else
{
     // start the process
     AppLoader.PROCESS_INFORMATION procInfo;
     bool result = AppLoader.StartProcess(appName, out procInfo);
}


//Check if the process is running or not.
while (true)
{
     Int32 result2 = WaitForMultipleObjects(.....);
     System.Threading.Thread.Sleep(1000);
}

里面的AppLoader代码我有StartProces,它有一个WIn 32 API CreateProcessAsUser

bool result = CreateProcessAsUser(hUserTokenDup,        
                                        null,                   
                                        applicationName,       
                                        ref sa,                 
                                        ref sa,                 
                                        false,                  
                                        dwCreationFlags,        
                                        IntPtr.Zero,           
                                        null,                   
                                        ref si,                 
                                        out procInfo            
                                        );

这是开始这个​​过程。

现在,当我的服务在第一次启动时开始,但是如果我终止了它,那么它就没有启动,所以我开始知道我必须使用WaitForMultipleObject Win32 API并完成它。我在谷歌中查了但WaitForMultipleObject没有代码示例,有人可以帮我展示WaitForMultipleObject的例子。

由于

0 个答案:

没有答案
相关问题