void ucDataCollectionServiceController_StatusChanged(object sender, WindowsServiceControllerEventArgs e)
        {
            Trace.TraceInformation("Service Status: " + e.CurrentStatus.ToString());

            switch (e.CurrentStatus)
            {
            case System.ServiceProcess.ServiceControllerStatus.Running:

                DataCollectionServiceControllerStatus = System.ServiceProcess.ServiceControllerStatus.Running;

                if (this.WindowsServiceControllerStatus == System.ServiceProcess.ServiceControllerStatus.Running)
                {
                    ucDataCollectionProcessInformation.Enabled = true;
                }
                else
                {
                    ucDataCollectionProcessInformation.Enabled = false;
                }

                btnGetCSQsRealtimeData.Enabled    = true;
                btnGetContactRealtimeData.Enabled = true;

                break;

            case System.ServiceProcess.ServiceControllerStatus.Stopped:

                DataCollectionServiceControllerStatus = System.ServiceProcess.ServiceControllerStatus.Stopped;

                ucDataCollectionProcessInformation.Reset();

                ucDataCollectionProcessInformation.Enabled = false;

                btnGetCSQsRealtimeData.Enabled    = false;
                btnGetContactRealtimeData.Enabled = false;

                break;

            default:

                DataCollectionServiceControllerStatus = System.ServiceProcess.ServiceControllerStatus.Stopped;

                ucDataCollectionProcessInformation.Enabled = false;

                ucDataCollectionProcessInformation.Enabled = false;

                btnGetCSQsRealtimeData.Enabled    = false;
                btnGetContactRealtimeData.Enabled = false;

                break;
            }
        }
        void ucWindowsServiceController_StatusChanged(object sender, WindowsServiceControllerEventArgs e)
        {
            Trace.TraceInformation("Service Status: " + e.CurrentStatus.ToString());

            switch (e.CurrentStatus)
            {
            case System.ServiceProcess.ServiceControllerStatus.Running:

                WindowsServiceControllerStatus = System.ServiceProcess.ServiceControllerStatus.Running;

                try
                {
                    if (_remObj != null)
                    {
                        _remObj = null;
                    }

                    _remObj = (InterprocessCommunicationServer)Activator.GetObject(typeof(InterprocessCommunicationServer), "tcp://127.0.0.1:" + Constants.IPC_PORT + "/" + Constants.IPC_URI);

                    if (_ApplicationSettings != null)
                    {
                        _ApplicationSettings = null;
                    }

                    _ApplicationSettings = (ApplicationSettings)_remObj.GetApplicationSettings();

                    ucDataCollectionProcessInformation.SetApplicationSettings(_ApplicationSettings);

                    ucWebServerSettings.txtWebServerIPAddress.Text        = _ApplicationSettings.WebServerIP;
                    ucWebServerSettings.txtWebServerPort.Text             = _ApplicationSettings.WebServerPort;
                    ucWebServerSettings.txtWebServerPrefix.Text           = _ApplicationSettings.WebServerPrefix;
                    ucWebServerSettings.txtContactDataCollectionPort.Text = _ApplicationSettings.WebServerDataCollectionPort;

                    ucEmailSettings.txtEmailFrom.Text    = _ApplicationSettings.EmailFrom;
                    ucEmailSettings.txtEmailTo.Text      = _ApplicationSettings.EmailTo;
                    ucEmailSettings.txtSMTPServer.Text   = _ApplicationSettings.SMTPServer;
                    ucEmailSettings.txtSMTPPort.Text     = _ApplicationSettings.SMTPPort;
                    ucEmailSettings.txtSMTPUser.Text     = _ApplicationSettings.SMTPUserName;
                    ucEmailSettings.txtSMTPPassword.Text = _ApplicationSettings.SMTPPassword;

                    ucEmailSettings.ckbEmailFailureNotifications.Checked = !_ApplicationSettings.EmailOnFailure;
                    ucEmailSettings.ckbEmailFailureNotifications.Checked = _ApplicationSettings.EmailOnFailure;
                    ucEmailSettings.ckbEmailSuccessNotifications.Checked = !_ApplicationSettings.EmailOnSuccess;
                    ucEmailSettings.ckbEmailSuccessNotifications.Checked = _ApplicationSettings.EmailOnSuccess;

                    ucUCCXInformation.txtUCCXNode1IPAddress.Text     = _ApplicationSettings.UCCXNode1IPAddress;
                    ucUCCXInformation.txtUCCXNode2IPAddress.Text     = _ApplicationSettings.UCCXNode2IPAddress;
                    ucUCCXInformation.txtUCCXApplicationPort.Text    = _ApplicationSettings.UCCXApplicationPort;
                    ucUCCXInformation.txtUCCXRealtimeDataPort.Text   = _ApplicationSettings.UCCXRealtimeDataPort;
                    ucUCCXInformation.txtAuthorizationPrefix.Text    = _ApplicationSettings.UCCXAuthorizationPrefix;
                    ucUCCXInformation.txtCallbackPrefix.Text         = _ApplicationSettings.UCCXCallbackPrefix;
                    ucUCCXInformation.txtUCCXAdminUser.Text          = _ApplicationSettings.UCCXAdminUser;
                    ucUCCXInformation.txtUCCXAdminPassword.Text      = _ApplicationSettings.UCCXAdminPassword;
                    ucUCCXInformation.txtNumberOfIVRPorts.Text       = _ApplicationSettings.UCCXNumberOfIVRPorts;
                    ucUCCXInformation.txtMaxIVRPortUsagePercent.Text = _ApplicationSettings.UCCXMaxIVRPortUsagePercent;

                    ucCallbackRecordsSettings.txtCallbackRecordsMaximumNumberOfDays.Text           = _ApplicationSettings.MaximumNumberOfDays.ToString();
                    ucCallbackRecordsSettings.txtCallbackRecordsMaximumNumberOfAttempts.Text       = _ApplicationSettings.MaximumNumberOfAttempts.ToString();
                    ucCallbackRecordsSettings.txtCallbackRecordsMinimumIntervalBetweenRetries.Text = _ApplicationSettings.MinimumIntervalBetweenRetries.ToString();

                    ucBasicInsertionThrottling.ckbEnabled.Checked            = !_ApplicationSettings.BasicInsertionThrottling_Enabled;
                    ucBasicInsertionThrottling.ckbEnabled.Checked            = _ApplicationSettings.BasicInsertionThrottling_Enabled;
                    ucBasicInsertionThrottling.txtMaximumRecordsAtATime.Text = _ApplicationSettings.BasicInsertionThrottling_MaximumRecordsAtATime.ToString();

                    ucDebugSettings.ckbDebugEnabled.Checked = _ApplicationSettings.Debug;
                    ucDebugSettings.ckbDebugEnabled.Checked = _ApplicationSettings.Debug;

                    ucDebugSettings.cbDebugLevel.Text = _ApplicationSettings.DebugLevel;

                    if (ucDebugSettings.cbDebugLevel.Text.Length == 0)
                    {
                        ucDebugSettings.cbDebugLevel.Text = "Verbose";
                    }

                    ucDebugSettings.cbRetainUnit.Text = _ApplicationSettings.DebugRetainUnit;

                    if (ucDebugSettings.cbRetainUnit.Text.Length == 0)
                    {
                        ucDebugSettings.cbRetainUnit.Text = "Files";
                    }

                    ucDebugSettings.txtRetainValue.Text = _ApplicationSettings.DebugRetainValue;

                    if (ucDebugSettings.txtRetainValue.Text.Length == 0)
                    {
                        ucDebugSettings.txtRetainValue.Text = "100";
                    }
                }
                catch (Exception ex)
                {
                    Trace.TraceWarning(ex.Message + Environment.NewLine + ex.StackTrace);

                    MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace);
                }

                if (DataCollectionServiceControllerStatus == System.ServiceProcess.ServiceControllerStatus.Running)
                {
                    ucDataCollectionProcessInformation.Enabled = true;
                }
                else
                {
                    ucDataCollectionProcessInformation.Enabled = false;
                }

                ucWebServerSettings.Enabled        = true;
                ucEmailSettings.Enabled            = true;
                ucDebugSettings.Enabled            = true;
                ucUCCXInformation.Enabled          = true;
                ucCallbackRecordsSettings.Enabled  = true;
                ucBasicInsertionThrottling.Enabled = true;

                mnuMainCallbackAdministration.Enabled = true;
                mnuMainCallbackDiagnostics.Enabled    = true;

                btnSave.Enabled = true;

                _ChangesDetected = false;
                _ChangesSaved    = false;

                break;

            case System.ServiceProcess.ServiceControllerStatus.Stopped:

                WindowsServiceControllerStatus = System.ServiceProcess.ServiceControllerStatus.Stopped;

                ucWebServerSettings.Enabled        = false;
                ucEmailSettings.Enabled            = false;
                ucDebugSettings.Enabled            = false;
                ucUCCXInformation.Enabled          = false;
                ucCallbackRecordsSettings.Enabled  = false;
                ucBasicInsertionThrottling.Enabled = false;

                mnuMainCallbackAdministration.Enabled = false;
                mnuMainCallbackDiagnostics.Enabled    = false;

                ucDataCollectionProcessInformation.SetApplicationSettings(null);
                ucDataCollectionProcessInformation.Enabled = false;
                ucDataCollectionProcessInformation.Reset();

                ucRealtimeProcessInformation.ResetMemoryCounterLabels();

                btnSave.Enabled = false;

                try
                {
                    if (_remObj != null)
                    {
                        _remObj = null;
                    }

                    if (_ApplicationSettings != null)
                    {
                        _ApplicationSettings = null;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace);
                }

                _ChangesDetected = false;
                _ChangesSaved    = false;

                break;

            default:

                WindowsServiceControllerStatus = System.ServiceProcess.ServiceControllerStatus.Stopped;

                mnuMainCallbackAdministration.Enabled = false;
                mnuMainCallbackDiagnostics.Enabled    = false;

                ucDataCollectionProcessInformation.Enabled = false;

                break;
            }
        }