2015-02-10 3 views
-1

У меня есть небольшое консольное приложение, которое просматривает набор папок и пытается установить свойства ID3Tag.TAGLIB - Необработанное исключение типа «System.StackOverflowException» произошло в mscorlib.dll

Альбом и исполнитель ScrPathn являются строковыми константами.

static void Main(string[] args) 
{ 
      List<string> dirs = new List<string>(Directory.EnumerateDirectories(SrcPath)); 

      foreach (var dir in dirs) 
      { 
       string ParentDirOfFile = dir.Substring(dir.LastIndexOf("\\") + 1); 
       List<string> files = new List<string>(Directory.EnumerateFiles(dir)); 
       foreach (var file in files) 
       { 
        string filename = Path.GetFileName(file); 
        string destfile = Path.Combine(SrcPath, ParentDirOfFile + "_" + filename); 
        var fs = new FileStream(destfile, FileMode.Open); 
        using (var tagFile = TL.File.Create(new TL.StreamFileAbstraction(destfile, fs, fs))) 
        { 
         tagFile.Tag.Album = Album; 
         tagFile.Tag.Title = Path.GetFileNameWithoutExtension(destfile); 
         tagFile.Tag.AlbumArtists = new string[] { Artist }; 
         tagFile.Save(); 
        } 
       } 
      } 
      Console.ReadLine(); 
     } 

На этапе сохранить я получаю:

System.StackOverflowException было необработанное Сообщение: Необработанное исключение типа 'System.StackOverflowException' произошло в mscorlib.dll

Я использую последней версии от TagLig, которую я установил через NuGet. Какие-либо ошибки?

EDIT. Дополнительная информация предоставлена ​​VS.

Измененный код для разделения прочитанных потоков записи.

var readfs = new FileStream(destfile, FileMode.Open); 
var writefs = new FileStream(Path.Combine(SrcPath, "_" + ParentDirOfFile + "_" + filename), FileMode.Create); 
using (var tagFile = TL.File.Create(new TL.StreamFileAbstraction(destfile, readfs, writefs))) 

Такая же ошибка и создается пустой новый файл.

+0

бросить ли это в первый раз она попадает спасти? – TaW

+0

Да. В первый раз. – BrilBroeder

ответ

0

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

using (var tagFile = TagLib.File.Create(destfile)) 
    { 
     tagFile.Tag.Album = Album; 
     tagFile.Tag.Title = Path.GetFileNameWithoutExtension(destfile); 
     tagFile.Tag.AlbumArtists = new string[] { Artist }; 
     tagFile.Save(); 
    } 
Смежные вопросы