private void bt_FilterExecuted(BatchFilter sender, Image input, Image output, Filter filter, SortedDictionary<string, object> configs)
 {
     FilterExecutedDelegate inv = new FilterExecutedDelegate(bt_FilterExecuted_threadsafe_);
     this.Invoke(inv, sender, input, output, filter, configs);
 }
 // The handler invokes a method in the form's thread, so it can interact directly
 // with the form's controls
 // EXECUTED
 private void bt_FilterExecuted(BatchFilter sender, WeakImage input, WeakImage output, Filter filter, SortedDictionary<string, object> configs, TimeSpan duration)
 {
     try
     {
         FilterExecutedDelegate inv = new FilterExecutedDelegate(bt_FilterExecuted_threadsafe_);
         this.Invoke(inv, sender, input, output, filter, configs, duration);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.GetType().FullName, ex.Message);
     }
 }