public String GetNextLine() { for (;;) { lock(this) { if (newLineAvailable) { newLineAvailable = false; String returnLine = latestLine; latestLine = null; return returnLine; } } Thread.Sleep(20); } }