void IParametersOutConsumer.ParametersOutReady(object sender, ParametersOutReadyEventArgs e)
 {
     paramOutNone   = false;
     paramOutValues = e.ParameterValues;
     if ((--consumersWaiting) == 0)
     {
         PartCommunicationMain();
     }
 }
 public override void PartCommunicationMain()
 {
     if (this.consumersWaiting == 0)
     {
         if (this.CellReady != null)
         {
             CellReadyEventArgs e = new CellReadyEventArgs {
                 Cell = this.Provide(ProviderPreference.SingleValue)
             };
             this.CellReady(this, e);
         }
         if (this.filterClear && (this.ClearFilter != null))
         {
             this.ClearFilter(this, EventArgs.Empty);
         }
         else if (this.filterNone && (this.NoFilter != null))
         {
             this.NoFilter(this, EventArgs.Empty);
         }
         else if (this.SetFilter != null)
         {
             SetFilterEventArgs args2 = new SetFilterEventArgs {
                 FilterExpression = this.Provide(ProviderPreference.FilterString) as string
             };
             this.SetFilter(this, args2);
         }
         if (this.listPartial && (this.PartialListReady != null))
         {
             PartialListReadyEventArgs args3 = new PartialListReadyEventArgs {
                 List = this.Provide(ProviderPreference.Table) as DataTable
             };
             this.PartialListReady(this, args3);
         }
         else if (this.ListReady != null)
         {
             ListReadyEventArgs args4 = new ListReadyEventArgs {
                 List = this.Provide(ProviderPreference.Table) as DataTable
             };
             this.ListReady(this, args4);
         }
         if (this.paramInNone && (this.NoParametersIn != null))
         {
             this.NoParametersIn(this, EventArgs.Empty);
         }
         else if (this.ParametersInReady != null)
         {
             ParametersInReadyEventArgs args5 = new ParametersInReadyEventArgs {
                 ParameterValues = this.Provide(ProviderPreference.Values) as string[]
             };
             this.ParametersInReady(this, args5);
         }
         if (this.paramOutNone && (this.NoParametersOut != null))
         {
             this.NoParametersOut(this, EventArgs.Empty);
         }
         else if (this.ParametersOutReady != null)
         {
             ParametersOutReadyEventArgs args6 = new ParametersOutReadyEventArgs {
                 ParameterValues = this.Provide(ProviderPreference.Values) as string[]
             };
             this.ParametersOutReady(this, args6);
         }
         if (this.RowReady != null)
         {
             RowReadyEventArgs args7 = new RowReadyEventArgs {
                 SelectionStatus = this.rowSel,
                 Rows            = this.Provide(ProviderPreference.Rows) as DataRow[]
             };
             this.RowReady(this, args7);
         }
     }
 }