2012-03-16 3 views
0

Я хотел бы отметить некоторые существующие mp3 с taglib #. У меня есть следующее сообщение об ошибке: «Процесс не может получить доступ к файлу, потому что он используется другим процессом». Я не знаю, какой процесс это может быть. Я могу получить доступ к любым mp3-файлам на любом из моих жестких дисков, я также могу использовать свойства файла, но я не могу сохранить изменения.taglib # не можем сохранить изменения

Это код.

OpenFileDialog f = new OpenFileDialog(); 
if ((bool)f.ShowDialog()) 
{ 
    try 
    { 
     if (f.OpenFile() != null) 
     { 

     TagLib.File file = TagLib.File.Create(f.FileName);        
     file.Tag.Album = "Album1"; 
     file.Save(); 

     } 
    } 
    catch (Exception ex) 
    { 
    MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); 
    } 
} 
else 
{ 
    MessageBox.Show("Problem occured, try again later"); 
} 

Не могли бы вы мне помочь? Thanks

+0

Если это действительно ваша ошибка, ваш вопрос заключается в том, чтобы узнать, что использует файл MP3. Http://stackoverflow.com/questions/317071/how-do-i-find-out-which-process-is-locking-a-file-using-net и http://stackoverflow.com/questions/177146/how-do-i-get-the-list-of-open-file-handle-by-process-in-c? Разве вы не открываете поток с доступом для записи? Странно, что неиспользуемые MP3 используются. – Jason

+1

'f.OpenFile()' никогда не вернет 'null'. – SLaks

+0

Почему вы думаете, что нажатие Отмена означает «Проблема возникла»? – SLaks

ответ

2

f.OpenFile() создает FileStream вокруг файла.
Поскольку вы никогда не закрываете этот поток, файл остается открытым.

Не делайте этого.