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; }