anchor.diff:  begin
     inherited Create;
     FStopEvent := TEvent.Create(nil, True, True, '');
  +  FWaitEvent := TEvent.Create(nil, True, true, '');
   end;
   
   destructor TASyncInvoker.Destroy;
   begin
     FStopEvent.Free;
  +  FWaitEvent.Free;
     inherited;
   end;
   
  
positive.code:     FOnAsyncEvent: TOnASyncEvent;
      FTerminated: Boolean;
      FStopEvent:TEvent;
      procedure InnerASync(pvWorker:TASyncWorker);
    public
      constructor Create;
      destructor Destroy; override;
  
      procedure Start(pvASyncEvent: TOnASyncEvent);
      procedure Terminate;
  
negative.code: procedure TASyncInvoker.Terminate;
  begin
    FTerminated := True;
    FWaitEvent.SetEvent;
  end;
  
  procedure TASyncInvoker.WaitForSleep(pvTime:Cardinal);
  begin
    FWaitEvent.ResetEvent;
    FWaitEvent.WaitFor(pvTime);
  end;
  
  procedure TASyncInvoker.WaitForStop;
  