public IPipeline <TOut> CreatePipeline() { _disruptor = new Disruptor <StepPayload <TOut> >(() => new StepPayload <TOut>(), 1024, TaskScheduler.Default /*, ProducerType.Multi, new BlockingSpinWaitWaitStrategy()*/); var handlerGroup = _disruptor.HandleEventsWithWorkerPool(_steps.First()); for (int i = 1; i < _steps.Count; ++i) { var step = _steps[i]; var makeStepToArray = new IWorkHandler <StepPayload <TOut> >[] { step }; handlerGroup = handlerGroup.HandleEventsWithWorkerPool(makeStepToArray); } var setResultHandler = new SetResultHandler <TOut>(); var setResultHandlerToArray = new IWorkHandler <StepPayload <TOut> >[] { setResultHandler }; handlerGroup.HandleEventsWithWorkerPool(setResultHandlerToArray); _disruptor.Start(); return(this); }
/// <summary> /// 显示测试结果 /// </summary> /// <param name="aResults">产品结果数组:0-NULL, 1-PASS, 2-FAIL</param> /// <param name="aShowAllNum">如果aResult[]长度小于MaxUUT,是否显示多余的UUT结果</param> public void SetResult(int[] aResults, bool aShowAllNum = false) { if (!this._rtb.IsHandleCreated) { return; } if (this._rtb.InvokeRequired) { SetResultHandler d = new SetResultHandler(SetResult); this._rtb.Invoke(d, new object[2] { aResults, aShowAllNum }); d = null; } else { lock (_lockThis) { if (aResults.Length > UUTNum.Length) { throw new Exception("Result数量大于可显示UUT数量!"); } for (int count = 0; count < UUTNum.Length; count++) { if (count == aResults.Length) { if (!aShowAllNum) { break; } } int q_len = this._rtb.Text.Length; this._rtb.AppendText(UUTNum[count]); int h_len = this._rtb.Text.Length; this._rtb.Select(q_len, h_len); if (count > aResults.Length - 1) { this._rtb.SelectionColor = Color.LightGray; this._rtb.SelectionFont = new System.Drawing.Font("宋体", 48.0f, FontStyle.Bold); } else { switch (aResults[count]) { case 0: this._rtb.SelectionColor = Color.LightGray; this._rtb.SelectionFont = new System.Drawing.Font("宋体", 48.0f, FontStyle.Bold); break; case 1: this._rtb.SelectionColor = Color.Green; this._rtb.SelectionFont = new System.Drawing.Font("宋体", 48.0f, FontStyle.Bold); break; case 2: this._rtb.SelectionColor = Color.Red; this._rtb.SelectionFont = new System.Drawing.Font("宋体", 48.0f, FontStyle.Bold); break; default: break; } } } this._rtb.AppendText("\r\n"); this._rtb.SelectionStart = this._rtb.TextLength; this._rtb.ScrollToCaret(); } } }