Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 进程退出/关闭/终止后关闭第三方SDK_C#_Visual Studio 2010_Process - Fatal编程技术网

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

C# 进程退出/关闭/终止后关闭第三方SDK,c#,visual-studio-2010,process,C#,Visual Studio 2010,Process,我已经编写了一个C应用程序,它使用System.Diagnostics.Process类创建一个进程,使用 var process = Process.Start(startInfo); 该流程由ServiceInvoker调用。 该服务在其持续时间内调用第三方DLL 等待一段时间后,我使用 process.Kill(); 即使在终止进程之后,如果DLL正在执行,它也不会停止 Kill不会调用进程的OnExit事件。 因此,在这种情况下,如何停止DLL执行 这方面的任何帮助都是值得的。也许你

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

var process = Process.Start(startInfo);
该流程由ServiceInvoker调用。 该服务在其持续时间内调用第三方DLL

等待一段时间后,我使用

process.Kill();
即使在终止进程之后,如果DLL正在执行,它也不会停止

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


这方面的任何帮助都是值得的。

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

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

一次又一次地关掉你的机器[原文如此]。。。。然后运行它。也许是别的什么东西打开了DLL。我不这么认为。但我还是会试试这个。