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

Dostęp do jednego pliku z różnych wątków w tym samym czasie
SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

Hej wszystkim :)

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

Kopiuj
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 :)

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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ą.

SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
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.

mad_penguin
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
1

Użyj instrukcji lock

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.