我的解决方案是使用Process.GetProcess()列出所有进程。
通过过滤它们以包含我想要的进程,然后可以运行Process.Kill()方法来停止它们:
var chromeDriverProcesses = Process.GetProcesses().
Where(pr => pr.ProcessName == "chromedriver"); // without '.exe'
foreach (var process in chromeDriverProcesses)
{
process.Kill();
}
更新:
如果想将async
方法与C# 8
(Async Enumerables)中的一些有用的最近方法一起使用,请检查以下内容:
const string processName = "chromedriver"; // without '.exe'
await Process.GetProcesses()
.Where(pr => pr.ProcessName == processName)
.ToAsyncEnumerable()
.ForEachAsync(p => p.Kill());
注意:使用async
方法并不总是意味着代码会运行得更快,但至少不会浪费CPU时间,并且可以防止前台线程在执行操作时挂起。无论如何,您都需要考虑可能需要的版本。