FileInfo блокирует файлы! - PullRequest
3 голосов
/ 26 августа 2010

Представьте себе приложение winform, которое копирует обновленные сборки из исходной папки A в целевую папку B. Я использую простые методы DirectoryInfo.GetFiles для заполнения списка, сравнивая версию сборки в папках A и B;если некоторые сборки новее, я запускаю метод обновления.В этом методе перед копированием я пытаюсь, если все файлы в папке B не используются:

var B = new DirectoryInfo("myBfolder");
foreach (var file in aFolder.GetFiles())
{
    try
    {
        //File not in use
        File.Open(file.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
    }
    catch (Exception ex)
    {
        //File in use!
    }
}

Ну, из-за предыдущего кода UpdateListView, который использует FileInfo, чтобы получить информацию, чтобы показать, результаты всех моих файловиспользуется!

FileInfo блокирует файлы!Возможно ли это?

Может кто-нибудь предложить способ обойти эту проблему?

Спасибо, Нандо

1 Ответ

4 голосов
/ 26 августа 2010

нет, File.Open блокирует файлы.

попробуйте использовать его:

using(var file = File.Open(file.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
   // process here
}
...