Witam,
Mam dwa wątki, każdy w innej klasie. Jeden jest wykonywany przez cały czas, drugi to timer. Oba ,,zgarniają" dane ze strumienia, ale na czas działania timera nasłuchiwanie z drugiego wątku powinno być wyłączone. Żeby to osiągnąć, napisałem coś takiego:
Wątek 1
:
static void listen()
{
while(true)
{
if (Listen) // Warunek, który powinien spowodować poprawne działanie programu
{
try
{
string msg = Reader.ReadString();
//...
}
catch {//...}
}
Thread.Sleep(100); // Odczekujemy czas
}
}
Timer
private void timer1_Tick(object sender, EventArgs e)
{
Class2.Listen = false; //Wyłączamy nasłuchiwanie z drugiego wątku
//...
string list = Class2.Reader.ReadString(); // Pobieramy dane ze strumienia | punkt zatrzymania się programu
//...
Class2.Listen = true; // Z powrotem włączamy nasłuchiwanie z drugiego wątku
}
Nie mam pojęcia czemu, ale za wykonaniem timer1_Tick
wszystko idzie jak powinno, ale za drugim razem warunek if z drugiego wątku jakoś zostaje pominięty, a dane są zbierane przez dalsze instrukcje zamiast przez timer. Nie mam pojęcia co powinienem zrobić. Debuggerem upewniłem się, że program zatrzymuje się w miejscu oznaczonym w kodzie, a drugi wątek zbiera dane mimo iż Listen
jest ustawione na false. Co może iść nie tak?