public void SetupListBox() { //TUBE NAMES SYNC lbDefaultNames.Items.Clear(); //general items lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer)); if (SeparatorResourceManager.isPlatformRS16()) { lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer34)); lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer56)); } lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.WasteTube)); lbDefaultNames.Items.Add(SeparatorResourceManager.getLysisStringFromProtocolClass(protocolClass)); lbDefaultNames.Items.Add(SeparatorResourceManager.getVialBStringFromProtocolClass(protocolClass)); lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.VialA)); lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.VialC)); lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.SampleTube)); lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.SeparationTube)); lbDefaultNames.SelectedIndex = 0; this.SetupCustomListBox(); }
public void SetupListBox() { //TUBE NAMES SYNC lbDefaultNames.Items.Clear(); //vial B Square //vial C Circle //vial A Triangle //general items if ((protocolClass == ProtocolClass.Positive) || (protocolClass == ProtocolClass.HumanPositive) || (protocolClass == ProtocolClass.MousePositive) || (protocolClass == ProtocolClass.WholeBloodPositive)) { lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.VialBpos)); } else if ((protocolClass == ProtocolClass.Negative) || (protocolClass == ProtocolClass.HumanNegative) || (protocolClass == ProtocolClass.MouseNegative) || (protocolClass == ProtocolClass.WholeBloodNegative)) { lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.VialBneg)); } else { lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.VialB)); } lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.VialC)); lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.VialA)); lbDefaultNames.SelectedIndex = 0; this.SetupBarcodeListBox(); }
private void UpdateTextbox() { StringId id = SeparatorResourceManager.convertNameToStringID((string)lbDefaultNames.SelectedItem); switch (id) { case StringId.VialA: txtCustomName.Text = triangleVialBarcode; break; case StringId.VialB: case StringId.VialBpos: case StringId.VialBneg: txtCustomName.Text = squareVialBarcode; break; case StringId.VialC: txtCustomName.Text = circleVialBarcode; break; } bool boEnabled = true; if (lbCustomNames.Items[lbDefaultNames.SelectedIndex].ToString() == SeparatorResourceManager.GetSeparatorString(StringId.ReagentNotUsed)) { boEnabled = false; txtCustomName.Text = SeparatorResourceManager.GetSeparatorString(StringId.ReagentNotUsed); } txtCustomName.Enabled = boEnabled; btnAcceptNewName.Enabled = boEnabled; }
public void SetupListBox() { //TUBE NAMES SYNC lbDefaultNames.Items.Clear(); //general items lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer)); if (SeparatorResourceManager.isPlatformRS16()) { lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer34)); lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer56)); } lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.WasteTube)); lbDefaultNames.Items.Add(SeparatorResourceManager.getLysisStringFromProtocolClass(protocolClass)); /* * if ((protocolClass == ProtocolClass.Positive) || (protocolClass == ProtocolClass.HumanPositive) || * (protocolClass == ProtocolClass.MousePositive) || (protocolClass == ProtocolClass.WholeBloodPositive)) * lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.VialBpos)); * else if ((protocolClass == ProtocolClass.Negative) || (protocolClass == ProtocolClass.HumanNegative) || * (protocolClass == ProtocolClass.MouseNegative) || (protocolClass == ProtocolClass.WholeBloodNegative)) * lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.VialBneg)); * else * lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.VialB)); * * lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.VialA)); * lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.VialC)); */ lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.SampleTube)); lbDefaultNames.Items.Add(SeparatorResourceManager.GetSeparatorString(StringId.SeparationTube)); lbDefaultNames.SelectedIndex = 0; }
private void SetupCheckboxes(int idx) { //uncheck all IEnumerator myEnumerator; myEnumerator = lbDefaultNames.CheckedIndices.GetEnumerator(); int i; while (myEnumerator.MoveNext() != false) { i = (int)myEnumerator.Current; lbDefaultNames.SetItemChecked(i, false); } //load checks //bool[] resultVialChecks; try { /* * theProtocolModel.GetResultVialChecks(idx, out resultVialChecks); * if (resultVialChecks != null)//set checks * { * for(i=0;i<lbDefaultNames.Items.Count;++i) * { * lbDefaultNames.SetItemChecked(i, resultVialChecks[i]); * } * } */ results = theProtocolModel.GetResultVialChecks(idx); i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.GetSeparatorString(StringId.SampleTube)); lbDefaultNames.SetItemChecked(i, results.sampleTube); i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.GetSeparatorString(StringId.SeparationTube)); lbDefaultNames.SetItemChecked(i, results.separationTube); i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.GetSeparatorString(StringId.WasteTube)); lbDefaultNames.SetItemChecked(i, results.wasteTube); i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer)); lbDefaultNames.SetItemChecked(i, results.bufferBottle); i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.getLysisStringFromProtocolClass(protocolClass)); lbDefaultNames.SetItemChecked(i, results.lysisBufferTube); //for rs16 i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer34)); lbDefaultNames.SetItemChecked(i, results.bufferBottle34); i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer56)); lbDefaultNames.SetItemChecked(i, results.bufferBottle56); } catch (Exception) {} }
// set the default vial names as custom names - vial names vary with the type of protocol public void SetDefaultCustomNames() { customVialNames = new customNames(); customVialNames.bufferBottle = SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer); customVialNames.wasteTube = SeparatorResourceManager.GetSeparatorString(StringId.WasteTube); customVialNames.magneticParticleVial = SeparatorResourceManager.GetSeparatorString(StringId.VialA); customVialNames.antibodyCocktailVial = SeparatorResourceManager.GetSeparatorString(StringId.VialC); customVialNames.sampleTube = SeparatorResourceManager.GetSeparatorString(StringId.SampleTube); customVialNames.separationTube = SeparatorResourceManager.GetSeparatorString(StringId.SeparationTube); customVialNames.bufferBottle34 = SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer34); customVialNames.bufferBottle56 = SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer56); customVialNames.lysisBufferTube = SeparatorResourceManager.getLysisStringFromProtocolClass(protocolClass); customVialNames.selectionCocktailVial = SeparatorResourceManager.getVialBStringFromProtocolClass(protocolClass); }
private InstrumentControlProxy() { // Create the objects that represent the control/event connections... // Make initial attempt to connect to the Instrument Control server. // Get the number of times to re-try if the connection attempt fails. NameValueCollection nvc = (NameValueCollection)System.Configuration.ConfigurationManager.GetSection("Separator/InstrumentControlConnection"); int retryCount, retryWait; try { retryCount = int.Parse(nvc.Get("RetryCount")); retryWait = int.Parse(nvc.Get("RetryWait_ms")); } catch { // Set default values in case the parse fails retryCount = 3; retryWait = 2000; // milliseconds } do { try { myXmlRpcProxy = new InstrumentControlXmlRpcProxy( RemotingInfo.GetInstance().IcsServerURL); retryCount = 0; // Clear the retry count as we're now connected. } catch (Exception ex) { // Connection attempt failed. Re-try if the number of attempts so far is // within the retry count specified in the application configuration file, // otherwise propagate an exception to tell the caller we failed to connect. myXmlRpcProxy = null; LogFile.AddMessage(TraceLevel.Warning, "retryCount = " + retryCount + " " + ex.Message); if (--retryCount <= 0) { throw new ApplicationException( SeparatorResourceManager.GetSeparatorString( StringId.ExFailedToConnectToInstrumentControl)); } // Pause before retrying connection attempt Thread.Sleep(retryWait); } } while (retryCount > 0); }
public override bool IsContentValid() { ClearAbsoluteVolumeError(); bool isContentValid = base.IsContentValid(); bool result; if (VolumeTypeSpecifier == VolumeType.Absolute) { VolumeLimits volumeLimits = VolumeLimits.GetInstance(); volumeLimits.UpateLiquidVolumeLimits(); double minimumAllowable_TipVolume_ul = (double)0; double maximumCapacity_ReagentTipVolume_ul = (double)volumeLimits.maximumCapacity_ReagentTipVolume_ul; double maximumCapacity_SampleTipVolume_ul = (double)volumeLimits.maximumCapacity_SampleTipVolume_ul; if (AbsoluteVolume_uL < minimumAllowable_TipVolume_ul) { ShowAbsoluteVolumeError(VolumeError.MINIMUM_AMOUNT); result = false; } else if ((cmbSourceVial.Text.IndexOf( SeparatorResourceManager.GetSeparatorString(StringId.VialA)) >= 0) || (cmbSourceVial.Text.IndexOf( SeparatorResourceManager.GetSeparatorString(StringId.VialB)) >= 0) || (cmbSourceVial.Text.IndexOf( SeparatorResourceManager.GetSeparatorString(StringId.VialC)) >= 0) ) { result = AbsoluteVolume_uL <= maximumCapacity_ReagentTipVolume_ul; if (!result) { ShowAbsoluteVolumeError(VolumeError.ABSOLUTE_1MLTIP_AMOUNT); } } else { result = AbsoluteVolume_uL <= maximumCapacity_SampleTipVolume_ul; if (!result) { ShowAbsoluteVolumeError(VolumeError.ABSOLUTE_5MLTIP_AMOUNT); } } isContentValid &= result; } return(isContentValid); }
private void UpdateCheckboxes(int idx) { IEnumerator myEnumerator; int i; bool[] resultVialChecks = new bool[8]; for (i = 0; i < 8; ++i) { resultVialChecks[i] = false; } myEnumerator = lbDefaultNames.CheckedIndices.GetEnumerator(); while (myEnumerator.MoveNext() != false) { i = (int)myEnumerator.Current; resultVialChecks[i] = true; } try { i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.GetSeparatorString(StringId.SampleTube)); results.sampleTube = lbDefaultNames.GetItemCheckState(i) == CheckState.Checked; i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.GetSeparatorString(StringId.SeparationTube)); results.separationTube = lbDefaultNames.GetItemCheckState(i) == CheckState.Checked; i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.GetSeparatorString(StringId.WasteTube)); results.wasteTube = lbDefaultNames.GetItemCheckState(i) == CheckState.Checked; i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer)); results.bufferBottle = lbDefaultNames.GetItemCheckState(i) == CheckState.Checked; i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.getLysisStringFromProtocolClass(protocolClass)); results.lysisBufferTube = lbDefaultNames.GetItemCheckState(i) == CheckState.Checked; //for rs16 i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer34)); results.bufferBottle34 = lbDefaultNames.GetItemCheckState(i) == CheckState.Checked; i = lbDefaultNames.Items.IndexOf(SeparatorResourceManager.GetSeparatorString(StringId.QuadrantBuffer56)); results.bufferBottle56 = lbDefaultNames.GetItemCheckState(i) == CheckState.Checked; } catch (Exception) {} //resultVialChecks[0]=false; //lbDefaultNames.SetItemCheckState(0,CheckState.Unchecked); //theProtocolModel.UpdateResultVialChecks(idx, resultVialChecks); theProtocolModel.UpdateResultVialChecks(idx, results); }
/// <summary> /// Make the connection to the Instrument Control XML-RPC server. /// </summary> public void Subscribe() { try { if (myXmlRpcProxy != null) { // Register for Instrument Control Events myXmlRpcProxy.Subscribe(RemotingInfo.GetInstance().IcsEventSinkURL); } } catch (Exception ex) { LogFile.LogException(TraceLevel.Error, ex); //DisableConnection(); throw new ApplicationException( SeparatorResourceManager.GetSeparatorString( StringId.ExFailedToSubscribeToInstrumentControl), ex); } }
// Create the modal dialog in the Pausing or Paused state (as indicated) public DialogResult ShowDialog(Form parent, bool isPausing) { DialogResult result = DialogResult.Abort; if (myEventSink != null) { if (isPausing) { myMessage = string.Format( SeparatorResourceManager.GetSeparatorString(StringId.PausePausingMessage), (timerPausingTimeout.Interval / 1000) ); myCaption = SeparatorResourceManager.GetSeparatorString(StringId.RunPausingText); myButtonLabels = new string[] {}; // hide the OK button okButton.Visible = false; // enable the timeout timer timerPausingTimeout.Start(); } else // already Paused { SetPausedMode(); } // Register to receive SeparatorState changes from the event sink myEventSink.UpdateSeparatorState += new SeparatorStatusDelegate(AtSeparatorStateUpdate); result = base.ShowDialog(parent, myMessage, myCaption, myButtonLabels, System.Drawing.SystemIcons.Information); // De-Register to receive SeparatorState changes from the event sink myEventSink.UpdateSeparatorState -= new SeparatorStatusDelegate(AtSeparatorStateUpdate); } return(result); }
private string GetBarcodeString(string barcode, int vialIdx) { //0 is vial B Square //1 is vial C Circle //2 is vial A Triangle //int vialIdx = lbDefaultNames.SelectedIndex; if (vialIdx < 0 || vialIdx > 2) { vialIdx = 0; } int quadrant = tabControl1.SelectedIndex; if (quadrant < 0 || quadrant > 3) { quadrant = 0; } return((barcode != "") ? barcode : (myUsedReagentVialList.Contains(GetLocation(quadrant, vialIdx)) ? SeparatorResourceManager.GetSeparatorString(StringId.ReagentCustom) : SeparatorResourceManager.GetSeparatorString(StringId.ReagentNotUsed))); }
private void LogException(Exception ex, string caller) { // Start with a generic error message string message = ex.Message; // If it is a known exception type, extract some more detailed information. CookComputing.XmlRpc.XmlRpcFaultException faultEx = ex as CookComputing.XmlRpc.XmlRpcFaultException; if (faultEx != null) { message = "(" + faultEx.FaultCode + ") " + faultEx.FaultString; } // Add more exception types if necessary string logMessage = SeparatorResourceManager.GetSeparatorString( StringId.ExInstrumentCommunicationsFailure) + message + " *** " + caller; LogFile.AddMessage(TraceLevel.Warning, logMessage); Debug.WriteLine(logMessage); // Report the error to the GUI so that it can take appropriate action ReportError(2, "TEC1300", new string[] { message }); }
private void SetPausedMode() { // Instrument has paused -- disable the timeout timer timerPausingTimeout.Stop(); // enable buttons cancelButton.Visible = true; cancelButton.Enabled = true; okButton.Visible = true; okButton.Enabled = true; okButton.Text = SeparatorResourceManager.GetSeparatorString(StringId.RunResumeText); cancelButton.Text = SeparatorResourceManager.GetSeparatorString(StringId.RunHaltText); myMessage = SeparatorResourceManager.GetSeparatorString(StringId.PausePausedMessage); lblMessageText.Text = myMessage; myButtonLabels = new string[2] { okButton.Text, cancelButton.Text }; this.Icon = System.Drawing.SystemIcons.Question; myCaption = SeparatorResourceManager.GetSeparatorString(StringId.RunPauseText); this.Caption = myCaption; Refresh(); }
private void SetPausedMode(bool lidClosed, bool isPauseCommand, string pauseCommandCaption) { // Instrument has paused -- disable the timeout timer timerPausingTimeout.Stop(); // enable buttons SetButton2Visible(!isTipStripError); button_2.Enabled = !isTipStripError; SetButton1Visible(true); button_1.Enabled = true; button_1.Text = SeparatorResourceManager.GetSeparatorString(StringId.RunResumeText); button_2.Text = SeparatorResourceManager.GetSeparatorString(StringId.RunHaltText); //myButtonLabels = new string[2] { okButton.Text, cancelButton.Text }; GUI_Controls.MessageIcon icon = GUI_Controls.MessageIcon.MBICON_INFORMATION; if (isPauseCommand) { myPauseStatus = PauseStatus.Manual; myCaption = SeparatorResourceManager.GetSeparatorString(StringId.RunPauseText); myMessage = pauseCommandCaption; System.Diagnostics.Debug.WriteLine("(new) in PauseResumeDlg.cs - SetPausedMode()...setting paused msg type 0 - PAUSE COMMAND\r"); // bdr LogFile.AddMessage(System.Diagnostics.TraceLevel.Verbose, "System paused manually"); } else if (pauseCommandCaption.Equals("Manual tip strip")) { isTipStripError = true; myPauseStatus = PauseStatus.TipStrip; // show general paused msg or custom paused-due-to-lid-up msg icon = GUI_Controls.MessageIcon.MBICON_ERROR; myCaption = LanguageINI.GetString("headerTipStripError"); myMessage = LanguageINI.GetString("msgTipStripError"); System.Diagnostics.Debug.WriteLine("(new) in PauseResumeDlg.cs - SetPausedMode()...setting paused msg type TIP - lid is closed\r"); // bdr pauseCommandCaption = ""; SetButton2Visible(false); button_2.Enabled = false; //myButtonLabels = new string[1] { okButton.Text }; LogFile.AddMessage(TraceLevel.Warning, "PauseResumeDialog: Tip Strip error warning displayed"); } else if (pauseCommandCaption.Equals("Tip strip recovery")) { isTipStripError = false; myPauseStatus = PauseStatus.Recovery; // show general paused msg or custom paused-due-to-lid-up msg myCaption = LanguageINI.GetString("headerTipStripRecovery"); myMessage = LanguageINI.GetString("msgTipStripRecovery"); myMessage = myMessage + '\n' + SeparatorResourceManager.GetSeparatorString(StringId.PausePausedMessage); System.Diagnostics.Debug.WriteLine("(new) in PauseResumeDlg.cs - SetPausedMode()...setting paused msg type TIP2 - lid is closed\r"); // bdr pauseCommandCaption = ""; SetButton2Visible(true); button_2.Enabled = true; LogFile.AddMessage(System.Diagnostics.TraceLevel.Info, "PauseResumeDialog: Tip strip recovery window displayed"); } else if (lidClosed) { myPauseStatus = PauseStatus.Lid; // show general paused msg or custom paused-due-to-lid-up msg myCaption = SeparatorResourceManager.GetSeparatorString(StringId.RunPauseText); myMessage = SeparatorResourceManager.GetSeparatorString(StringId.PausePausedMessage); System.Diagnostics.Debug.WriteLine("(new) in PauseResumeDlg.cs - SetPausedMode()...setting paused msg type 1 - lid is closed\r"); // bdr LogFile.AddMessage(TraceLevel.Warning, "PauseResumeDialog: Lid Sensor pause window displayed"); } else { //this branch is never used... ?? RL myCaption = SeparatorResourceManager.GetSeparatorString(StringId.RunPauseText); myMessage = SeparatorResourceManager.GetSeparatorString(StringId.PauseLidUpMessage); System.Diagnostics.Debug.WriteLine("(new) in PauseResumeDlg.cs - SetPausedMode()...setting paused msg type 2 - lid is open\r"); // bdr LogFile.AddMessage(TraceLevel.Warning, "PauseResumeDialog: unexpected branch"); } SetIcon(icon); SetMessage(myMessage); this.label_WindowTitle.Text = myCaption; this.Size = determineSize(myMessage); ResizeButtons(); this.button_1.Refresh(); this.button_2.Refresh(); Refresh(); }
// Create the modal dialog in the Pausing or Paused state (as indicated) public DialogResult ShowDialog(Form parent, bool isPausing, bool isLidClosed, bool isPauseCommand, string pauseCommandCaption) // bdr new { // LOG LogFile.AddMessage(System.Diagnostics.TraceLevel.Info, "Show PauseResumeDialog"); DialogResult result = DialogResult.Abort; if (myEventSink != null) { if (isPausing) { System.Diagnostics.Debug.WriteLine("(new) in PauseResumeDlg.cs ShowDLg() state: isPausing"); // bdr myMessage = string.Format( SeparatorResourceManager.GetSeparatorString(StringId.PausePausingMessage), (timerPausingTimeout.Interval / 1000) ); myCaption = SeparatorResourceManager.GetSeparatorString(StringId.RunPausingText); this.label_WindowTitle.Text = myCaption; SetIcon(GUI_Controls.MessageIcon.MBICON_INFORMATION); myButtonLabels = new string[] { }; // hide the OK button SetButton1Visible(false); SetButton2Visible(false); // enable the timeout timer timerPausingTimeout.Start(); LogFile.AddMessage(TraceLevel.Warning, "Run is pausing"); } else // already Paused { System.Diagnostics.Debug.WriteLine("(new) in PauseResumeDlg.cs ShowDLg() state: Paused"); // bdr SetPausedMode(isLidClosed, isPauseCommand, pauseCommandCaption); // bdr new LogFile.AddMessage(TraceLevel.Warning, "Run Paused"); } // Register to receive SeparatorState changes from the event sink if (myStatusDelegate == null) { myStatusDelegate = new SeparatorStatusDelegate(AtSeparatorStateUpdate); } myEventSink.UpdateSeparatorState += myStatusDelegate; //result = base.ShowDialog(parent, myMessage, myCaption, myButtonLabels, // System.Drawing.SystemIcons.Information); // // << Jason Modification to fit new GUI >> // this.PreviousForm = parent != null ? parent : RoboSep_UserConsole.getInstance(); this.message = myMessage; this.SetMessage(myMessage); this.button_1.Text = LanguageINI.GetString("lblResume"); this.button_2.Text = LanguageINI.GetString("lblStop"); this.SetIcon(GUI_Controls.MessageIcon.MBICON_WAIT); this.Size = determineSize(myMessage); ResizeButtons(); this.button_1.Refresh(); this.button_2.Refresh(); // show dialog RoboSep_UserConsole.showOverlay(); this.ShowDialog(); RoboSep_UserConsole.hideOverlay(); result = this.DialogResult; string dbg = string.Format("PsRsDlg result {0}", result); System.Diagnostics.Debug.WriteLine(dbg); // bdr // De-Register to receive SeparatorState changes from the event sink if (myStatusDelegate != null) { myEventSink.UpdateSeparatorState -= myStatusDelegate; } this.Dispose(); } return(result); }