/// <summary>
        /// Write all pins
        /// </summary>
        internal void Write()
        {
            Busy = true;
            var settings = CreateConfig();

            Enabled = false;
            lb.BeginRequest(
                x => programmer.Write(x, settings.GetSVConfigs()),
                x =>
            {
                Enabled = true;
                Busy    = false;
                if (x.HasError)
                {
                    MessageBox.Show(x.Error.Message);
                }
                else
                {
                    WriteSucceeded.Fire(this);
                }
            });
        }
        /// <summary>
        /// Write a single pin
        /// </summary>
        internal void WritePin(object sender, EventArgs e)
        {
            Busy = true;
            var control = (LocoIOPinConfigurationControl)sender;
            var config  = control.CreateConfig();

            control.Enabled = false;
            lb.BeginRequest(
                x => programmer.Write(x, config),
                x =>
            {
                control.Enabled = true;
                Busy            = false;
                if (x.HasError)
                {
                    MessageBox.Show(x.Error.Message);
                }
                else
                {
                    WriteSucceeded.Fire(this);
                }
            });
        }
        private void Write(LocoIOConnectorConfigurationControl connector, Button cmdWrite)
        {
            Busy = true;
            var settings = connector.CreateConfig();

            connector.Enabled = false;
            cmdWrite.Enabled  = false;
            lb.BeginRequest(
                x => programmer.Write(x, settings),
                x =>
            {
                connector.Enabled = true;
                cmdWrite.Enabled  = true;
                Busy = false;
                if (x.HasError)
                {
                    MessageBox.Show(x.Error.Message);
                }
                else
                {
                    WriteSucceeded.Fire(this);
                }
            });
        }