Dostęp do jednego pliku z różnych wątków w tym samym czasie

0

Hej wszystkim :)

Męczę się z tym już od dłuższej chwili, tak mniej więcej aktualnie to wygląda:

FileStream fs { get; set; }
private void Thread1()
{
	fs = File.Open("plik.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
        using (StreamReader sr = new StreamReader(fs))
}

private void Thread2()
{
	using (StreamWriter sw = new StreamWriter(fs))
}

Oczywiście próbuję osiągnąć to, aby jednocześnie plik był odczytywany oraz, aby były zapisywane w nim nowe treści. Niestety coś nie trybi, w czym problem? Z góry dzięki za pomoc :)

2

Bo zwyczajnie nie da się tak zrobić? Plik zostanie zalockowany i drugi raz go nie otworzysz. W takim celu należy korzystać np. z kolejki komunikatów albo innego mechanizmu komunikacji międzyprocesowej. Ale skoro masz wątki to są łatwiejsze metody komunikowania wątków między sobą.

0

Shalom, też tak myślałem, jakoże odpowiedzi w google na to wskazywały, niestety nadal nie mogłem dojść do odpowiedniego wyjścia z problemu.
Więc pytanie, jak w takim razie osiągnąć to, aby StreamReader & StreamWriter działał na zmianę? Tzn. jeżeli działa StreamReader, to StreamWriter czeka na swoją kolej, a jeżeli działa StreamWriter, to StreamReader czeka na swoją kolej.

1

Użyj instrukcji lock

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