void Engine_PercentageProgressHandler(CSVComparisonEngine.TEvent aEvent, CSVComparisonEngine aSender, int aProgressPercent)
 {
     if (InvokeRequired)
     {
         CSVComparisonEngine.PercentageProgressHandler observer = new CSVComparisonEngine.PercentageProgressHandler(Engine_PercentageProgressHandler);
         this.BeginInvoke(observer, new object[] { aEvent, aSender, aProgressPercent });
     }
     else
     {
         iProgressBar.Value = aProgressPercent;
     }
 }
 void Engine_EventHandler(CSVComparisonEngine.TEvent aEvent, CSVComparisonEngine aSender)
 {
     if (InvokeRequired)
     {
         CSVComparisonEngine.EventHandler observer = new CSVComparisonEngine.EventHandler(Engine_EventHandler);
         this.BeginInvoke(observer, new object[] { aEvent, aSender });
     }
     else
     {
         if (aEvent == CSVComparisonEngine.TEvent.EEventOperationStarted)
         {
         }
         else if (aEvent == CSVComparisonEngine.TEvent.EEventOperationComplete)
         {
             iProgressBar.Value = 100;
             Close();
         }
     }
 }
        void Engine_IndexedProgressHandler(CSVComparisonEngine.TEvent aEvent, CSVComparisonEngine aSender, int aCurrentIndex, int aMaxIndex)
        {
            if (InvokeRequired)
            {
                CSVComparisonEngine.IndexedProgressHandler observer = new CSVComparisonEngine.IndexedProgressHandler(Engine_IndexedProgressHandler);
                this.BeginInvoke(observer, new object[] { aEvent, aSender, aCurrentIndex, aMaxIndex });
            }
            else
            {
                if (aEvent == CSVComparisonEngine.TEvent.EEventComparingMovedToNewDataSet)
                {
                    Text = string.Format("Performing comparsion {0}/{1}", aCurrentIndex, aMaxIndex);
                }
                else if (aEvent == CSVComparisonEngine.TEvent.EEventSplittingMovedToNewFile)
                {
                    Text = string.Format("Extracting data set(s) from file {0}/{1}", aCurrentIndex, aMaxIndex);
                }

                // Reset progress
                iProgressBar.Maximum = 100; //%
                iProgressBar.Minimum = 0;   //%
                iProgressBar.Value   = 0;
            }
        }