【发布时间】:2010-11-19 15:04:27
【问题描述】:
我有一个 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();
}
【问题讨论】: