Задать вопрос
@myrkonianin

Файл занят своим же процессом ....!?

Дело вот в чем... Если я открываю файл в своей программе, и пытаюсь этот же файл сохранить, мне выдает ошибку что файл занят другим процессом... И тут mind.exe has stopping working... И теперь как мне высвободить "из под себя" файл? Я что-то не вдупляю, помогите!
код где ошибка:
RichTextBox rtb = tabControl1.SelectedTab.Controls[0] as RichTextBox;
            //StreamWriter sr = new StreamWriter(openFileDialog1.FileName, false, Encoding.UTF8);

            if (tabControl1.SelectedTab.Text != "new " + tabControl1.SelectedIndex)
                {
                    saveFileDialog1.FileName = GetFileName(tabControl1.SelectedTab.Text);
                }

                if (tabControl1.TabPages.Count == 0)
                {
                    newTab();
                }
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    if (!File.Exists(saveFileDialog1.FileName))
                    {
                        rtb.SaveFile(GetFileName(saveFileDialog1.FileName), RichTextBoxStreamType.PlainText);
                        tabControl1.SelectedTab.Text = GetFileName(saveFileDialog1.FileName);
                    }
                    else
                    {
                        File.Delete(saveFileDialog1.FileName);
                        rtb.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);
                        tabControl1.SelectedTab.Text = GetFileName(saveFileDialog1.FileName);
                    }
                }
  • Вопрос задан
  • 384 просмотра
Подписаться 1 Простой 6 комментариев
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    SDP-030_PRG Продвинутая разработка в Microsoft .NET
    1 неделя
    Далее
  • Ulearn.me
    Проектирование на языке C#
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
Вы не можете сохранить файл, который читаете. Вы можете открыть файл для чтения и можете открыть для записи. Файловый поток нельзя открыть одновременно в двух режимах, и на чтение, и на запись. Если Вы открыли файл на чтение, то прежде чем его перезаписать, поток надо закрыть.

В Вашем случае возможно не использовался using или dispose, что-то, что закроет поток, ну или явно закрыть поток.
В общем, порядок такой: открыли файл на чтение (получили текст или байты), закрыли поток, изменили содержимое, открыли файл на запись, перезаписали, закрыли поток.

Если Вы используете класс File для работы с файлами, то закрытие он выполняет самостоятельно автоматом. Если же поток открывается, например, через StreamWriter, то за закрытием надо следить самостоятельно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы