public async Task Send()
        {
            var data = new List <IRow>();
            var rec  = new TaskExecutedList();

            for (int i = 0; i < Senders.Length; i++)
            {
                Senders[i].valuesToBeSent = valuesToBeSent;
                var te = new TaskExecuted(Senders[i].Send());
                rec.Add(te);
            }
            //await Task.WhenAll(rec.AllTasksWithLogging());
            await Task.WhenAll(rec.AllTasksWithLogging());

            if (!rec.Exists(it => it.IsSuccess()))
            {
                //LOG: no data
                return;
            }
            var failed = rec.Select(it => !it.IsSuccess()).ToArray();

            foreach (var item in failed)
            {
                //LOG: exception why failed
            }
        }
        async Task <IRowReceive[]> DataFromReceivers()
        {
            List <IRowReceive> data = new List <IRowReceive>();
            var rec = new TaskExecutedList();

            for (int i = 0; i < Receivers.Length; i++)
            {
                var te = new TaskExecuted(Receivers[i].LoadData());
                rec.Add(te);
            }
            await Task.WhenAll(rec.AllTasksWithLogging());

            if (!rec.Exists(it => it.IsSuccess()))
            {
                //LOG: no data
                return(null);
            }
            var failed = rec.Select(it => !it.IsSuccess()).ToArray();

            foreach (var item in failed)
            {
                //LOG: exception why failed
            }

            for (int i = 0; i < Receivers.Length; i++)
            {
                var item = Receivers[i];
                if (item.valuesRead?.Length == 0)
                {
                    continue;
                }
                data.AddRange(item.valuesRead);
            }
            return(data.ToArray());
        }