我编写了一个C#应用程序,它使用System.Diagnostics.Process类创建一个进程,使用
var process = Process.Start(startInfo);
ServiceInvoker调用该进程。 该服务在其持续时间的cource中调用第三方DLL。
等待一段时间后,我使用
终止进程process.Kill();
即使在DLL执行后杀死进程也不会停止。
Kill 不会调用进程的OnExit事件。 那么如何在这种情况下停止DLL执行。
这方面的任何帮助都很明显。
答案 0 :(得分:0)
也许你需要杀死这个过程及其子女?
/// <summary>
/// Kill a process, and all of its children, grandchildren, etc.
/// </summary>
/// <param name="pid">Process ID.</param>
private static void KillProcessAndChildren(int pid)
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher
("Select * From Win32_Process Where ParentProcessID=" + pid);
ManagementObjectCollection moc = searcher.Get();
foreach (ManagementObject mo in moc)
{
KillProcessAndChildren(Convert.ToInt32(mo["ProcessID"]));
}
try
{
Process proc = Process.GetProcessById(pid);
proc.Kill();
}
catch (ArgumentException)
{
// Process already exited.
}
}