Mam problem z zapisem do pliku, ponieważ plik jest używany przez inny proces, pojawia się, gdy będę szybko wpisywał słowa za pierwszym razem, potem już go nie ma.
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 Vocabulary
{
public partial class FormDodajBaze : Form
{
public FormDodajBaze()
{
InitializeComponent();
this.MaximizeBox = false;
wylaczPolaSlowa();
}
//metoda wlączajaca pola do slow
private void wlaczPolaSlowa()
{
textBoxSlowoAngielskie.Enabled = true;
textBoxSlowoPolskie.Enabled = true;
}
private void wylaczPolaSlowa()
{
textBoxSlowoAngielskie.Enabled = false;
textBoxSlowoPolskie.Enabled = false;
}
//metoda czyszcząca textBoxy gdzie wpisujemy słowa
private void wyczyscTextBoxSlowa()
{
textBoxSlowoPolskie.Text = "";
textBoxSlowoAngielskie.Text = "";
}
//metoda dodająca słowa
public void dodajSlowa(TextBox textBoxAng, TextBox textBoxPl)
{
try
{
string sciezka = Application.StartupPath+ @"\\Bazy\"+ textBox1NazwaBazy.Text+".txt";//przekazujemy ściężkę do pliku z odpowiednią bazą
StreamWriter sw = new StreamWriter(sciezka, true);
string linia;
linia = textBoxAng.Text + "," + textBoxPl.Text;
sw.WriteLine(linia);
sw.Close();
MessageBox.Show("Słowa zostały poprawnie dodane do bazy. \nMożesz przejść do katalogu programu i skopiować odpowiednie nagranie dla tego słowa do folderu "+textBox1NazwaBazy.Text+"Audio"+" lub dodać kolejne słowa do bazy, a później zająć się nagraniami"+"\nW celu skorzystania z nowej bazy należy zrestartować program.", "Komunikat");
}
catch (IOException ex)
{
MessageBox.Show("Nie udało się dodać poprawnie słów do bazy. Przepraszamy."+ex, "Błąd");
}
wyczyscTextBoxSlowa();
}
//metoda dodająca wpis do pliku Bazy .txt i tworząca plika bazy
public void dodajBaze(TextBox textBox)
{
try
{
string sciezka = Application.StartupPath + @"\\Bazy\\Bazy.txt";//otwieramy plik bazy w celu dodania wpisu
StreamWriter sw = new StreamWriter(sciezka, true);
sw.WriteLine(textBox.Text+",");
sw.Close();
FileInfo fi = new FileInfo(Application.StartupPath + @"\\Bazy\\"+textBox.Text+".txt");//tworzymy plik Bazy
fi.Create();
DirectoryInfo di = new DirectoryInfo(textBox.Text + "Audio");//tworzymy folder dla nagrań
di.Create();
MessageBox.Show("Baza została utworzona poprawnie, można przejść do dodawania słówek do bazy.", "Komunikat");
wlaczPolaSlowa();
}
catch (Exception)
{
MessageBox.Show("Nie udało się utworzyć bazy.", "Błąd");
}
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1NazwaBazy.Text != "")
{
dodajBaze(textBox1NazwaBazy);
}
else
{
MessageBox.Show("Proszę wpisać nazwę bazy.", "Komunikat");
}
}
private void button3_Click(object sender, EventArgs e)
{
if (textBoxSlowoAngielskie.Text != "" || textBoxSlowoPolskie.Text != "")
dodajSlowa(textBoxSlowoAngielskie, textBoxSlowoPolskie);
else
{
MessageBox.Show("Proszę uzupełnić wymagane informację.", "Komunikat");
}
}
private void button2_Click(object sender, EventArgs e)
{
textBox1NazwaBazy.Text = "";
wyczyscTextBoxSlowa();
}
}
}
Treść błędu: http://imageshack.us/photo/my-images/6/screenbdbazy4.jpg/
Można temu jakoś zapobiec?