Problem z plikiem - jest używany przez inny proces.

0

Piszę, że plik jest używany przez inny proces, ale nie wiem gdzie go indziej używam(wydaję mi się, że nie). Można to jakoś naprawić?


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;

namespace Voc
{
    public partial class FormKomunikat : Form
    {
        private void ZapiszUstawieniaKomunikatu(string ustawienie)
        {
            try
            {
                StreamWriter sw = new StreamWriter(Application.StartupPath + @"\Komunikat.txt");
                sw.WriteLine(ustawienie);
                sw.Close();
            }
            catch (IOException ex)
            {
                MessageBox.Show("Błąd: " + ex, "Komunikat");
            }
        }
        public FormKomunikat()
        {
            InitializeComponent();
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked == false)
            {
                ZapiszUstawieniaKomunikatu("false");
            }
            else
            {
                ZapiszUstawieniaKomunikatu("true");
            }
        }
    }
}
0

Zapewne w jednym miejscu swojego programu otwierasz strumień i go nie zamykasz.

0

Ja mam podobny proces tylko, że nie wiem czemu wywala mi, że plik nie jest do odczytu a w konstruktorze daje ReadWrite.


        FileStream fs = new FileStream(Directory.GetCurrentDirectory() + "\\Foo.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
        try
        {
            StreamWriter sw = new StreamWriter(fs);

            sw.WriteLine("Hello world!");
            sw.WriteLine("Good bye !");

            sw.Close();

        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }

        try
        {
            StreamReader sr = new StreamReader(fs);

            Console.WriteLine(sr.ReadToEnd());
            sr.Close();

        }
        catch (Exception es)
        {
            Console.WriteLine(es.ToString());
        }
        fs.Close();

Samo czytanie działa bez kawałku z tworzeniem i wpisywaniem.

0

Jaki wyjątek leci? Może nie masz uprawnień do zapisu w tym miejscu.

0

Oto przyczyna: http://msdn.microsoft.com/en-[...]y/system.io.stream.close.aspx

StreamWriter.Close napisał(a)

This method calls Dispose, specifying true to release all resources.

StreamWriter.Dispose napisał(a)

When the disposing parameter is true, this method releases all resources held by any managed objects that this StreamWriter references.

Podsumowując: wywołanie Close na obiekcie StreamWriter zamknie też używany przez niego FileStream. Czyli w momencie czytania FileStream jest już zamknięty

0

Dzięki ;p Tego nie było w tutku na 4p...

0

Bo 4p to dupna strona. ;P

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0