2012-05-12 2 views
1

У меня есть устранение неполадок с удалением изображения в моем приложении, я использовал foreach для удаления файла в папке.Удалить фотографию в моей папке приложения

Я использовал запись в браузере Headless skype в моей заявке с именем контактного контакта и фотографиями контакта После успешного входа в систему, но у меня возникли проблемы, когда я закрыл приложение, я хочу удалить все фотографии контакта в папке моего приложения. Смотрите код для удаления:

var assemblyLocation = Assembly.GetExecutingAssembly().Location; 
var applicationDirectory = System.IO.Path.GetDirectoryName(assemblyLocation); 
var imagesDirectory = System.IO.Path.Combine(applicationDirectory, "img"); 
var contact_photo = Directory.EnumerateFiles(imagesDirectory, 
    "*.jpg",SearchOption.TopDirectoryOnly); 
if (contact_photo != null) 
{ 
    foreach (var photo in contact_photo) 
    { 
     Console.WriteLine(photo); 

     File.Delete(photo); 
    } 

}

Сообщение об ошибке:

The process cannot access the file 'C:\Users\...\mypicture.jpg' 
because it is being used by another process. 

Помогите мне пожалуйста !

+2

убедитесь, что вы убить все процессы приложения, потому что она по-прежнему с помощью фото вы хотите удалить –

+0

Обратите внимание, что для нормально установленных приложений у вас нет доступа на запись в его папку. – Joey

ответ

1

Обратитесь к этому ответу https://stackoverflow.com/a/1025446/988830

Файл используется другим процессом, и вы должны убедиться, что процесс, который имеет удерживайте файл освободил его. Если он не находится под вашим контролем, вам нужно попробовать блок catch, чтобы избежать исключения, и вы не можете сделать больше.

try 
{ 
    //Delete file 
} 
catch (Exception ex) 
{ 
    Console.WriteLine(ex.Message.ToString()); 
} 
+0

Спасибо за ваш ответ, когда я пытаюсь следить за вами, показывая ошибку в консоли, но я точно не знаю, почему я не могу удалить, когда я вхожу в систему, исправив имя пользователя и пароль в Skype. Для меня я не уверен, но я думаю, из-за того, что я использую DispatcherTimer() в MainWindows для запроса контактного контура через 5 секунд. Поэтому, возможно, проблема с DsspatcherTimer, когда процесс удалит эту фотографию. Как вы относитесь к этому процессу? Проблема со временем выполнения Skype или DispactureTimer при удалении?. Любые идеи! – user1379210

0

Прежде чем удалять изображения, просмотрели ли вы использование этих изображений?

Другие части вашего приложения WPF может заблокировать их, когда вы не замечаете,

BitmapImage in WPF does lock file

Смежные вопросы