如何在 C# 中删除正在运行的应用程序?

Ija*_*jas 3 c#

我需要从 Windows 中删除正在运行的应用程序。我用进程名杀死了所有进程。立即删除时,我收到了一些错误消息。但是在延迟任务 3 秒后,应用程序被删除没有任何问题。

谁能解释为什么会这样?

foreach (var process in Process.GetProcessesByName(appName))
{
    process.Kill();
}

System.Threading.Tasks.Task.Delay(1000 * 3).Wait(); // if we try to delete directly after killing process then error occurs
System.IO.Directory.Delete(sourceFolder, true);
Run Code Online (Sandbox Code Playgroud)

ang*_*son 10

之所以发生这种情况,是因为它的设计行为是这样的:

Process.Kill文档

笔记

Kill 方法异步执行。调用该Kill方法后,调用该WaitForExit方法等待进程退出,或者检查HasExited属性判断进程是否退出。