У меня есть цикл foreach, который запускает процесс в try / catch.В разделе finally моего 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();
}