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