TAGLIB — необработанное исключение типа «System.StackOverflowException» в mscorlib.dll.

У меня есть небольшое консольное приложение, которое просматривает набор папок и пытается установить свойства ID3Tag.

ScrPathn Album и Artist являются строковыми константами.

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 is unhandled Сообщение: в mscorlib.dll произошло необработанное исключение типа «System.StackOverflowException».

Я использую последнюю версию TagLig, которую установил через NuGet. Любые предложения?

РЕДАКТИРОВАТЬ. Никакой дополнительной информации 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)))

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


person BrilBroeder    schedule 10.02.2015    source источник
comment
Он срабатывает при первом сохранении?   -  person TaW    schedule 10.02.2015
comment
да. В первый раз.   -  person BrilBroeder    schedule 11.02.2015


Ответы (1)


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

    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();
    }
person TaW    schedule 11.02.2015