У меня есть класс C #, который выполняет бесконечный цикл, пока условная переменная не будет установлена в значение true. Есть другой класс, который ожидает сетевого сообщения, и когда сообщение получено, есть вызов к другому классу, чтобы изменить условную переменную на true, чтобы он мог выйти из цикла while. Ожидание сообщения осуществляется в отдельном потоке:
Класс модификатора:
public class Modifier{
Otherclass log;
private static NetworkStream theStream;
private StreamReader theInput;
public Modifier(Otherclass other, NetworkStream str)
{
this.log = other;
theStream = str;
theInput = new StreamReader(theStream);
Thread listenThread = new Thread(new ThreadStart(listen));
listenThread.Start();
}
public void listen()
{
while (true)
{
log.postMessage(theInput.ReadLine());
}
}
}
А другой класс:
public class Otherclass{
bool docontinue = true;
public void postMessage(string input)
{
docontinue = true;
}
public void wait()
{
while(!docontinue)
{
}
}
}
Проблема в том, что программа застревает во время (! Docontinue), хотя сообщение отправлено. Я подозреваю, что проблема в том, что переменная docontinue не изменяется, но я не знаю, если проблема в другом месте.