public bool Wait(CommandResult result) { if (result == null) { return(true); } ClearInterrupt(); WaitHandle[] handles = new WaitHandle [2]; handles [0] = interrupt_event; handles [1] = result.CompletedEvent; int ret = WaitHandle.WaitAny(handles); if (ret == 0) { result.Abort(); result.CompletedEvent.WaitOne(); return(false); } if (result.Result is Exception) { throw (Exception)result.Result; } return(true); }