public TimeSpan Start() { var s = new Stopwatch(); s.Start(); foreach (var t in _tablesToCopy) { var rows = _databaseIO.GetRows(t); StartingWith?.Invoke(this, new Tuple <string, long>(t.FullTableName, rows)); _databaseIO.TimeOut = Timeout; _databaseIO.CopyTable(t); //System.Threading.Thread.Sleep(5000); // simulate long operation DoneWith?.Invoke(this, t.FullTableName); } DoneWith?.Invoke(this, null); s.Stop(); return(s.Elapsed); }