我有一个foreach循环,在try / catch中启动一个进程。在try / catch / finally的finally部分中,我正在尝试确保该进程没有占用任何文件的句柄。我必须删除正在处理的文件。
我尝试的所有方法似乎都不起作用。我仍然会收到System.IO异常:“文件当前正在被另一个进程使用。”
您可以看到在finally中,在从此方法返回之前使用了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();
}