public async Task Run() { var ret = new List <IRowReceive>(); var prop = Receiver.GetType().GetProperty(PropertyNameReceiver); var failed = new List <IRow>(); foreach (var item in valuesRead) { if (!item.Values.ContainsKey(Key)) { continue; } var val = item.Values[Key]; prop.SetValue(Receiver, val); Receiver.ClearValues(); try { await Receiver.LoadData(); } catch (Exception ex) { string message = ex.Message; //@class.Log(LogLevel.Error,0,$"first error for {val} in transformerApplyReceiver",ex,null); failed.Add(item); continue; } if (Receiver.valuesRead?.Length > 0) { ret.AddRange(Receiver.valuesRead); } } //second chance to load.... foreach (var item in failed) { var val = item.Values[Key]; prop.SetValue(Receiver, val); Receiver.ClearValues(); try { await Receiver.LoadData(); } catch (Exception ex) { string message = ex.Message; //@class.Log(LogLevel.Error,0,$"second error for {val} in transformerApplyReceiver",ex,null); } } valuesTransformed = ret.ToArray(); }