private bool CheckValidation() { bool success = false; var waiting = true; var started = DateTime.Now; var payload = Guest.CreatePayload(); payload.EmailAddress = _emailAddressTextBox.Text; payload.DemoPassword = _demoPasswordTextBox.Text; Guest.ValidateTemporaryAccessToken(payload, (reply, bdea) => { this.AccessToken = reply.AccessToken; success = !String.IsNullOrEmpty(this.AccessToken); waiting = false; }, (error, ebdea) => { this.ShowError(error.ErrorMessage, null); waiting = false; }); Task.Factory.StartNew(() => { while (waiting && (started.AddSeconds(30) > DateTime.Now)) { Thread.Sleep(10); } if (waiting) { this.ShowError("Timed out waiting for response", null); } }).Wait(); return(success); }