我遇到了一个奇怪的问题(这可能是我缺乏知识),我提出了有问题的代码:
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 之间做得更好,但我现在将进行更改,shotgun 编码......