Считывание содержимого файла C# и SystemOutOfMemoryException

Разрабатываю приложение для архивации. для записи в файл/чтения использую стандартную библиотеку System.IO. При считывании строки программа способна оперировать информацией, однако, при подгрузке из файла этой же информации программа кидает SystemOutOfMemoryException. С чем это может быть связано?

Функция добавления файла в виде строки:

        private async void btnAddElement_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            System.Windows.Forms.OpenFileDialog ofd = new System.Windows.Forms.OpenFileDialog();
            ofd.Filter = "All|*.*|Image|*.jpg;*.jpeg;*.png|Video|*.mp4";
            if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                currentFile.Add(FileToBase64(ofd.FileName));
                names.Add(GetFileName(ofd.FileName).Replace(' ', specSymbol));
                MessageBox.Show(names[names.Count - 1]);
                if (withName)
                    await Task.Run(() => File.WriteAllLines(resPath, ConstructContent(currentFile, names)));
                else
                    await Task.Run(() => File.WriteAllLines(resPath, FilesToBase64(currentFile)));
                WriteToLog("\"" + ofd.FileName + "\" added successfuly.", new StackTrace());
                MessageBox.Show("\"" + ofd.FileName + "\" added successfuly.");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error on new file adding: " + ex.Message + " " + ex.Source);
            WriteToLog("Error on new file adding", new StackTrace(), ex);
        }
    }

ConstructContent здесь соединяет всю нужную информацию в строки для записи. Функция отделения содержимого файла для работы (считанного в сыром виде через ReadAllLines):

List<string> GetContent(List<string> fileLines)
    {
        List<string> base64s = new List<string>();
        for (int i = 0; i < fileLines.Count; i++)
        {
            try
            {
                base64s.Add(fileLines[i].Split()[0]);
            }
            catch (Exception ex)
            {
                MessageBox.Show("GetContent(): Index-" + i + ";" + ex.Message);
            }
        }
        return base64s;
    }

Прошу заметить, что программа не получает огромных объемов информации, так как при добавлении строки функционирует нормально, а вот считывание из файла, почему-то, требует огромного количества памяти. Исключение получается в результате выполнения этой команды в GetContent:

fs.Add(cf[i].Split()[0]);

Ответы (0 шт):