public void DoWork(ICalculateContext context) { List <ICalculateOutput> outputs = new List <ICalculateOutput>(); foreach (ICalculate calc in context.CalculateOperators) { ICalculateOutput output = calc.Calc(context.CalculateInpute); if (output != null) { outputs.Add(output); } } #if DEBUG List <string> vals = new List <string>(); #endif if (outputs != null && outputs.Count > 0) { foreach (ICalculateOutput output in outputs) { foreach (SinkFunction sf in context.Sinks) { try { sf.Open(); sf.Invoke(output.DataSource, null); sf.Close(); #if DEBUG foreach (IMetaData md in output.DataSource) { vals.Add(md.TagValue); } #endif } catch (Exception ex) { Logger.Log.Error(true, sf.GetType().ToString(), ex); } } } if (PublishCalculateCompleted != null) { context.CalculateOutputs = outputs; PublishCalculateCompleted(context); } #if DEBUG string resultVals = String.Join(",", vals); Logger.Log.Info(false, $"{context.Name}_{this.Name}_{context.Desc}-线程({Thread.CurrentThread.ManagedThreadId.ToString("0000")}):【{context.LeftTime.ToString()}-{context.RightTime.ToString()}】,【Result】:{resultVals}"); #else Logger.Log.Info(false, $"{context.Name}_{this.Name}_{context.Desc}-线程({Thread.CurrentThread.ManagedThreadId.ToString("0000")}):【{context.LeftTime.ToString()}-{context.RightTime.ToString()}】,【Result】:{outputs.Count.ToString()}"); #endif } else { Logger.Log.Info(false, $"{context.Name}_{this.Name}_{context.Desc}-线程({Thread.CurrentThread.ManagedThreadId.ToString("0000")}):【{context.LeftTime.ToString()}-{context.RightTime.ToString()}】,【Result】:计算结果为空"); } }
public void DoWork(ICalculateContext context) { ICalculateOutput output = context.CalculateOperator.Calc(context.CalculateInpute); if (output != null) { foreach (SinkFunction sf in context.Sinks) { try { sf.Open(); sf.Invoke(output.DataSource, null); sf.Close(); } catch (Exception ex) { Logger.Log.Error(true, sf.GetType().ToString(), ex); } } if (PublishCalculateCompleted != null) { context.CalculateOutput = output; PublishCalculateCompleted(context); } } if (output != null) { Logger.Log.Info(false, $"{context.Name}_{this.Name}_{context.Desc}-线程({Thread.CurrentThread.ManagedThreadId.ToString("0000")}):【{context.LeftTime.ToString()}-{context.RightTime.ToString()}】,【Result】:{output.DataSource[0].TagValue}"); } else { Logger.Log.Info(false, $"{context.Name}_{this.Name}_{context.Desc}-线程({Thread.CurrentThread.ManagedThreadId.ToString("0000")}):【{context.LeftTime.ToString()}-{context.RightTime.ToString()}】,【Result】:计算结果为空"); } }
public CalculateContext(string name, string desc, DateTime leftTime, DateTime rightTime, CalculateType calculateType, ICalculateInpute inpute, ICalculateOutput output, ICalculate calculateOperator) { Name = name; Desc = desc; LeftTime = leftTime; RightTime = rightTime; CalculateType = calculateType; CalculateInpute = inpute; CalculateOutput = output; CalculateOperator = calculateOperator; IExecutionEnvironment env = ExecutionEnvironment.GetExecutionEnvironment(null); if (env == null) { Sinks = new List <SinkFunction>(); } else { Sinks = new List <SinkFunction>(((ExecutionEnvironment)env).Sinks); } }