anchor.diff:    TReplicaEngine = class
     strict private
       FCanTerminate : boolean;
  +    FApplication : TCustomApplication;
   
       procedure InternalReplicaTable (aProgress: ImProgress; aData : TObject; aJobResult : TJobResult);
       procedure DoTerminate(const aJobsResult : TJobResults);
     public
  -    function ProcessTables ({$ifdef gui}aParentForm : TForm;{$endif} const aTables : TDataReplicaTables; const aResults : IPerformedOperationResults = nil; const aMaxConcurrentThreads : integer = -1) : boolean;
  +    function ProcessTables ({$ifdef gui}aParentForm : TForm;{$endif} aApplication : TCustomApplication; const aTables : TDataReplicaTables; const aResults : IPerformedOperationResults = nil; const aMaxConcurrentThreads : integer = -1) : boolean;
     end;
   
     function DoReplicaTable (const aTable : TDataReplicaTableToTable; aProgress: ImProgress; aResults : IPerformedOperationResults) : boolean;
  
positive.code:     begin
        newjob := batchexec.QueueJob;
        newjob.Description:= aTables.Get(i).DestinationTableName;
        newjob.DoJobProcedure := InternalReplicaTable;
        tmpJobData := TJobData.Create;
        jobDataList.Add(tmpJobData);
  
negative.code:   FCanTerminate:= true;
  end;
  
  function TReplicaEngine.ProcessTables({$ifdef gui}aParentForm : TForm;{$endif} aApplication : TCustomApplication; const aTables: TDataReplicaTables; const aResults : IPerformedOperationResults; const aMaxConcurrentThreads: integer): boolean;
  var
    batchexec : TmBatchExecutor;
    newjob : TmJob;
  