/// <summary>
        /// Lista elem küldése, azonnal teszi a Queue-ba.
        /// </summary>
        public void Send(object item)
        {
            var senderItem = item as CanTxMessageItem;

            if (senderItem != null)
            {
                if (_isRunning)
                {
                    var msg = new CommonCanMessage
                    {
                        Source        = "Message Sender Collection By Click Trigger",
                        Name          = senderItem.Name,
                        Data          = senderItem.Data,
                        Remote        = senderItem.Remote,
                        ArbitrationId = senderItem.ArbitrationId,
                        Type          = senderItem.Type,
                        Description   = senderItem.Description,
                        Documentation = senderItem.Documentation,
                    };
                    TxQueue.Enqueue(msg);
                }
            }
            else
            {
                throw new InvalidCastException();
            }
        }
        /// <summary>
        /// Futtatja a periodikus küldést.
        /// </summary>
        private void DoWork()
        {
            foreach (var item in this)
            {
                item.LastUpdateDateTimeTicks = DateTime.Now.Ticks;
            }
            do
            {
                try
                {
                    lock (((ICollection)this).SyncRoot) /*Bejáráskor nem válozhat a lista!*/
                    {
                        var dateTimeNow = DateTime.Now.Ticks;
                        foreach (var item in this)
                        {
                            if (item.IsPeriod && (dateTimeNow - item.LastUpdateDateTimeTicks >= item.PeriodTime * 10000))
                            {
                                Debug.WriteLine(GetType().Namespace + "." + GetType().Name + "." + MethodBase.GetCurrentMethod().Name + "(): Last Period:" +
                                                ((dateTimeNow - item.LastUpdateDateTimeTicks) / (double)10000).ToString("N3"));
                                item.LastUpdateDateTimeTicks = dateTimeNow;

                                var msg = new CommonCanMessage
                                {
                                    Source        = "Periodic Sender",
                                    Name          = item.Name,
                                    Data          = item.Data,
                                    Remote        = item.Remote,
                                    ArbitrationId = item.ArbitrationId,
                                    Type          = item.Type,
                                    Documentation = item.Documentation,
                                    Description   = item.Description,
                                };
                                TxQueue.Enqueue(msg);
                            }
                        }
                        Thread.Sleep(_threadSleepMs);
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(GetType().Namespace + "." + GetType().Name + "." + MethodBase.GetCurrentMethod().Name + "(): DoWork is now shutdown by Loop Fuction Exception.");
                    LastException = ex;
                    break;
                }

                if (_shutdownEvent.WaitOne(0))
                {
                    Debug.WriteLine(GetType().Namespace + "." + GetType().Name + "." + MethodBase.GetCurrentMethod().Name + "(): DoWork is now shutdown!");
                    break;
                }
            } while (_isRunning);

            _isRunning = false;

            TxQueue?.Clear();

            Debug.WriteLine(GetType().Namespace + "." + GetType().Name + "." + MethodBase.GetCurrentMethod().Name + "(): Loop is colsed...");
        }