@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);
                    }
                }
  • Вопрос задан
  • 330 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
Вы не можете сохранить файл, который читаете. Вы можете открыть файл для чтения и можете открыть для записи. Файловый поток нельзя открыть одновременно в двух режимах, и на чтение, и на запись. Если Вы открыли файл на чтение, то прежде чем его перезаписать, поток надо закрыть.

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

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

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

Войти через центр авторизации
Похожие вопросы