gpt4 book ai didi

C# 阻止代码直到进程释放文件句柄

转载 作者:行者123 更新时间:2023-11-30 15:09:37 25 4
gpt4 key购买 nike

我有一个 foreach 循环,它在 try/catch 中启动一个进程。在我的 try/catch/finally 的最后部分,我试图确保该进程没有任何文件的句柄。我必须删除正在处理的文件。

我尝试过的一切似乎都不起作用。我继续收到 System.IO 异常。 “该文件当前正被另一个进程使用。”

您可以在最后看到我在从此方法返回之前使用 WaitForExit()。下一个方法调用是删除文件。为什么在此之后该进程仍处于打开状态或处理这些文件中的任何一个?

谢谢!

try
{
foreach (var fileInfo in jsFiles)
{
//removed for clarity
_process.StartInfo.FileName = "\"C:\\Program Files\\Java\\jre6\\bin\\java\"";
_process.StartInfo.Arguments = stringBuilder.ToString();
_process.StartInfo.UseShellExecute = false;
_process.StartInfo.RedirectStandardOutput = true;
_process.Start();
}
}
catch (Exception e)
{
BuildMessageEventArgs args = new BuildMessageEventArgs("Compression Error: " + e.Message,
string.Empty, "JSMin", MessageImportance.High);
BuildEngine.LogMessageEvent(args);

}
finally
{
_process.WaitForExit();
_process.Close();
}

最佳答案

这里有严重的问题。您正在启动一堆进程,但只等待最后 产生的进程退出。

您确定不希望 foreach 位于 try block 之外吗?

如果您告诉我们更多关于您到底想做什么的信息,我们可以提供更好的建议。

关于C# 阻止代码直到进程释放文件句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4226243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com