try/catch内でプロセスを開始するforeachループがあります。私のtry/catchのfinallyセクションでは、最終的には、プロセスがどのファイルに対してもハンドルを持たないようにしています。私は処理されていたファイルを削除する必要があります。C#プロセスがファイルのハンドルを解放するまでのブロックコード
私が試したことはありません。私は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();
}
提案していただきありがとうございます。 – Nick