私は奇妙な問題(おそらく私の知識不足です)に悩まされています。問題のあるコードを提示します:
try
{
f.Delete();
fTemp.MoveTo(f.FullName);
Console.WriteLine("INFO: Old file deleted new file moved in > {0}", f.FullName);
}
catch (IOException ex)
{
Console.WriteLine("ERROR: Output file has IO exception > {0}", f.FullName);
Environment.ExitCode = 1;
}
f と fTemp は FileInfo オブジェクトです。したがって、f がメディアプレーヤーで再生中のビデオ ファイルであるコードでこれを実行すると、例外がスローされます。それは正常に動作し、期待どおりです。メディアプレーヤーを閉じると、ファイルが削除されます!? 私のアプリケーションは長い間閉鎖されていますが。Visual Studio を閉じても、メディア プレーヤーを閉じるとファイルが削除されます。ある時点でファイルが確実に削除されるように、コールバックがどこかにセットアップされているかのように。望ましくない行動のこのオフコース。しかし、私は正確に何が間違っているのか理解できません...
今のところの結果:
if (!IsFileLocked(f))
{
try
{
f.Delete();
fTemp.MoveTo(f.FullName);
Console.WriteLine("INFO: Old file deleted new file moved in > {0}", f.FullName);
}
catch (IOException ex)
{
Console.WriteLine("ERROR: Output file has IO exception > {0}", f.FullName);
Environment.ExitCode = 1;
}
catch (UnauthorizedAccessException ex)
{
Environment.ExitCode = 2;
Console.WriteLine("ERROR: Output file is locked > {0}", f.FullName);
}
}
else
{
Environment.ExitCode = 3;
Console.WriteLine("ERROR: Couldn't delete file was locked");
}
Delete と MoveTo の間でまだうまくやれることはわかっていますが、とりあえず変更を行います。ショットガン コーディング.....