Функция удаления удаляется, даже если вызывающее приложение закрыто

Я столкнулся со странной проблемой (, которая, вероятно, связана с моим недостатком знаний ), я представляю код нарушения :

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 все еще можно добиться большего успеха, но пока я возьму свои изменения, кодирование дробовика.....

6
задан Brian Tompsett - 汤莱恩 23 August 2015 в 14:47
поделиться