在进程退出/关闭/终止后关闭第三方 SDK

本文关键字:第三方 SDK 终止 进程 退出 关闭 | 更新日期: 2023-09-27 18:32:01

我编写了一个 C# 应用程序,它使用 System.Diagnostics.Process 类来创建进程,使用

var process = Process.Start(startInfo);

该过程由服务调用程序调用。该服务在其持续时间内调用第三方 DLL。

等待一段时间后,我使用以下命令杀死该过程,

process.Kill();

即使终止进程,如果DLL正在执行,它也不会停止。

Kill 不会调用进程的 OnExit 事件。那么在这种情况下,我如何停止 DLL 执行。

在这件事上的任何帮助都是可观的.

在进程退出/关闭/终止后关闭第三方 SDK

也许你需要杀死进程及其子进程?

    /// <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.
        }
    }