Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Erro - An unhandled exception of type 'System.IO.IOException'

Olá, sempre que aperto F5 e digito a 1ª letra dentro do meu Text Box, a aplicação trava e aparece uma janela do Visual Studio com o seguinte erro:

"An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll

Additional information: O processo não pode acessar o arquivo 'C:\Users\Leandro\Documents\Visual Studio 2015\Projects\Editor\Editor\bin\Debug\entrada.txt' porque ele está sendo usado por outro processo."

Abaixo segue o meu código:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading.Tasks;

namespace Editor
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void texto_TextChanged(object sender, EventArgs e)
        {
            if (File.Exists("entrada.txt"))
            {
                Stream entrada = File.Open("entrada.txt", FileMode.Open);
                StreamReader leitor = new StreamReader(entrada);
                string linha = leitor.ReadLine();

                while (linha != null)
                {
                    texto.Text += linha;
                    linha = leitor.ReadLine();
                }
                leitor.Close();
                entrada.Close();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Stream saida = File.OpenWrite("texto.txt");
            StreamWriter escritor = new StreamWriter(saida);

            escritor.Write(texto.Text);

            escritor.Close();
            saida.Close();
        }
    }
}
5 respostas

Oi Leandro, tudo bom?

Pelo seu erro, parece que o processo não conseguiu acessar o arquivo entrada.txt que está no diretorio C:\Users\Leandro\Documents\Visual Studio 2015\Projects\Editor\Editor\bin\Debug\ porque ele está sendo usado por algum outro programa. Tenta fechar todos os programas que podem estar usando esse arquivo =)

Se não resolver, tente matar os processos pelo gerenciador (ctrl+shift+esc) ou reiniciar a máquina

Qualquer problema, compartilhe com a gente!

Fala, Leandro!

Olha a mensagem de erro te ajudando:

Additional information: O processo não pode acessar o arquivo 'C:\Users\Leandro\Documents\Visual Studio 2015\Projects\Editor\Editor\bin\Debug\entrada.txt' porque ele está sendo usado por outro processo."

Algum processo está com o arquivo aberto. Você está com o arquivo aberto em algum lugar? No Visual Studio ou num bloco de notas?

Outra possibilidade é que haja um processo perdido do seu programa e esteja com ele aberto, impedindo que sua aplicação acesse ele. Se for esse o caso, abra o gerenciador de tarefas e procure pelo processo do visual studio que está perdido. Para não se perder, feche o visual studio e todos os programas, possíveis. Veja se algum processo vai ficar na lista e finalize a tarefa.

Tente de novo.

Oi André e Arthur, então fiz o procedimento que seria o mais óbvio e matei matei alguns processos, também reiniciei o sistema e de fato o erro permaneceu.

solução!

Fala, Leandro!

Cara, eu lendo seu código me surgiu uma dúvida aqui.

O método texto_TextChanged é invocado quando você digita alguma coisa no seu campo texto.

Lendo o código, ele vai ler o conteúdo do arquivo e escrever no mesmo campo texto? Se for, é provavelmente o problema.

Pq veja, o evento é "textChanged", então, se você alterar a propriedade Text do campo, ele vai chamar este método de novo. Veja essa linha do seu método:

texto.Text += linha;

Quando chegar nessa linha, o texto do campo terá sido alterado e esse método será chamado novamente, antes do antigo ter terminado!!! Nesse ponto, o arquivo está sim aberto!!!

O certo não seria no método load da classe, ler o conteúdo do arquivo e jogar nesse campo ao invés de trabalhar com o evento onchange?

O erro estava dando por conta dessa linha mesmo, valeu!