private void Instrument_onPositionChange(object sender, SeriesPositionChangeEvent e) { int iCount = __cVariables.Count; if (iCount > 0) { lock (__cVariables) { Parallel.For(0, iCount, (i) => { IVariables cVariables = __cVariables[i]; cVariables.Move(e.Current); }); } } CalcBar(); }
/// <summary> /// 計算使用者設計的邏輯方法 CalcBar /// </summary> internal void OnCalculate() { int iCount = __cVariables.Count; if (iCount > 0) { lock (__cVariables) { Parallel.For(0, iCount, (i) => { IVariables cVariables = __cVariables[i]; Instrument cInstrument = this.Instruments[cVariables.DataStream - 1]; cVariables.Move(cInstrument.CurrentBar); }); } } try { this.CalcBar(); } catch(Exception __errExcep) { if (logger.IsErrorEnabled) logger.ErrorFormat("{0}\r\n{1}", __errExcep.Message, __errExcep.StackTrace); } }