public void StartListening() { //TODO: prevent from this running more than once lock (this) { if (_recognitionThread == null) { var start = new ThreadStart(StartListening); _recognitionThread = new Thread(start); _recognitionThread.Start(); return; } } while (true) { var input = _speechRecognizer.Recognize(0.8); ProcessInput(input); } }