public override string ReadLine() { try { bgw.DoGuiAction(GuiAction.ReadStart); bgw.DoGuiAction(GuiAction.ReadLn); semaGetInput.WaitOne(); // wait until text has been entered in tbInput return(tbInput.Text); } finally { semaGetInput.Reset(); bgw.DoGuiAction(GuiAction.ReadEnd); } }