我已使用C#
启动了一个可执行文件。
处理启动代码:
Process process = new Process();
process.StartInfo.FileName = stopNifiexePath;
Environment.CurrentDirectory = Path.GetDirectoryName(process.StartInfo.FileName);
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.Start();
process.WaitForExit();
Process.WaitForExit()
行完成。但是,当我尝试手动删除exe
文件夹时,我无法删除文件夹。抛出异常:
操作无法完成,因为其中的文件夹或文件已在其他程序中打开。
注意:在我停止ConsoleApplication后,ConsoleApplication6.vshost
进程仍在运行。我再次尝试手动删除exe
文件夹。该文件夹已删除。
如何删除在后台运行ConsoleApplication
的文件夹。
答案 0 :(得分:2)
将当前目录设置为远离您尝试删除的目录。如果您还在其中,则无法将其删除。
您可能真正想要的是设置ProcessStartInfo.WorkingDirectory
,而不是Environment.CurrentDirectory
。
所以改变这一行:
Environment.CurrentDirectory = Path.GetDirectoryName(process.StartInfo.FileName);
这个
process.WorkingDirectory = Path.GetDirectoryName(process.StartInfo.FileName);
答案 1 :(得分:0)
尝试拨打
process.Dispose()
在Process.Exited
事件中。
答案 2 :(得分:0)
您需要强制进程释放所有资源。我建议使用using
代码。
using (Process process = new Process())
{
process.StartInfo.FileName = stopNifiexePath;
Environment.CurrentDirectory = Path.GetDirectoryName(process.StartInfo.FileName);
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.Start();
process.WaitForExit();
}
这将在WaitForExit
完成时处理该过程。