public Task SignalAndWaitAsync() { try { this.Signal(); return(this.WaitAsync()); } catch (Exception ex) { return(ThreadingTools.TaskFromException(ex)); } }