/// <summary> /// Runs this instance. /// </summary> public void Run() { this.ExecutingThread = Thread.CurrentThread; try { _proc.Execute(); EtlProcess p = _proc.ToEtlProcess(); List <Exception> errors = new List <Exception>(p.GetAllErrors()); if (errors.Count > 0) { this.ProcessMessage(this, new MessageEventArgs(errors.Count + " errors in total were found during the ETL process.")); //Log these errors LogExceptions(errors); } } catch (ThreadAbortException) { //FIXME: Sometimes this doesn't terminate cleanly. I'm guessing the proper //way would be to implement a "kill switch" in EtlProcess and //for this code block to flick this switch Thread.ResetAbort(); } }