static int _timeout = 300; // in _waits public static bool WaitForFinished(out string message) { Duration = 0; while (++Duration < _timeout) { if (Finished) { message = _message; WfWatcher.ReceiveMessage(); return(true); } Thread.Sleep(_wait); } message = _message; return(false); }