Beispiel #1
0
 public void UpdateSignal(T signal)
 {
     lock (SignalsToUpdateLock)
     {
         var indexSignal = SignalsToUpdate.FindIndex(m => m.ID == signal.ID);
         if (indexSignal >= 0)
         {
             SignalsToUpdate[indexSignal] = signal;
         }
         else
         {
             SignalsToUpdate.Add(signal);
         }
     }
 }
Beispiel #2
0
        /// <summary>
        /// The Update Task which sends the Signals to update periodically to the Broker
        /// </summary>
        /// <param name="updateTime"></param>
        private void UpdateMqttTask(TimeSpan updateTime)
        {
            while (!_updateMqttCancellationTokenSource.Token.IsCancellationRequested)
            {
                _updateMqttCancellationTokenSource.Token.WaitHandle.WaitOne(updateTime);

                if (SignalsToUpdate.Count == 0)
                {
                    continue;
                }

                lock (SignalsToUpdateLock)
                {
                    foreach (var signalToSend in SignalsToUpdate)
                    {
                        SendCaValue(signalToSend);
                    }

                    SignalsToUpdate.Clear();
                }
            }
        }