public static CommunicationProcessResult WriteSingle <T>(Connection connection, IReporter reporter, ISettingValue <T> setting, T value)
        {
            setting.Value = value;

            SettingProcess process = new SettingProcess(connection, reporter, new ISettingValue[] { setting }, 100, 3);

            CommunicationProcessResult result = process.Write();

            return(result);
        }
        public static CommunicationProcessResult WriteSingle <T>(Connection connection, IReporter reporter, int timeout, int retryLimit, ISettingValue <T> setting, T value)
        {
            setting.Value = value;

            SettingProcess process = new SettingProcess(connection, reporter, setting, timeout, retryLimit);

            CommunicationProcessResult result = process.Write();

            return(result);
        }
        public override CommunicationProcessResult Write(ISettingItem[] items, IReporter reporter = null, int timeout = 100, int retryLimit = 3)
        {
            CheckConnection();

            List <ISettingValue> settings = GetAllValues(items);

            SettingProcess process = new SettingProcess(Connection, reporter, settings, timeout, retryLimit);

            lock (readWriteLock)
            {
                return(process.Write());
            }
        }