/// <summary> /// 光谱分析回调函数,在ProcessWaitDialog中调用 /// </summary> /// <param name="callBack"></param> /// <returns></returns> public bool ProcessTask(ProcessWaitDialog.SetProcessAndMsgDeletage callBack) { foreach (spectrumDisplayInfo item in reIdentifyItems) { DrugInfo drug = item as DrugInfo; double cc = Common.DrugAnalyte.CorCoeffAnalyte(curModel, drug.filename); if (cc > 0) { drug.identModel = curModel.licenseCode; drug.identValue = cc; drug.identResult = cc >= curModel.thresold ? EnumIdentResult.OK : EnumIdentResult.FAULT; drug.identTime = DateTime.Now; Common.CommonMethod.WriteDrugInfo(drug); } else { ErrorString = Common.DrugAnalyte.ErrorString; return(false); } bool abortTask = false; callBack("正在分析:" + drug.filename, reIdentifyItems.Count, reIdentifyItems.IndexOf(item), out abortTask); } return(true); }
/// <summary> /// 光谱扫描回调函数,在ProcessWaitDialog中调用 /// </summary> private bool ScanSampleTask(ProcessWaitDialog.SetProcessAndMsgDeletage callBack) { if (curScanTaskInfo == null) { return(false); } //创建扫描线程 System.Threading.Thread scanThread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(curScanTaskInfo.DoScan)); scanThread.IsBackground = true; scanThread.Start(curScanPara.scanCount); int curTime = Environment.TickCount; string msgStr = "正在扫描" + (curScanTaskInfo.isBackground ? "背景" : "样品") + "......"; //等待扫描完成 while (scanThread.IsAlive) { //假定一次扫描需要2秒 if (Environment.TickCount - curTime > curScanTaskInfo.scanPara.scanCount * 2000) { return(false); } System.Threading.Thread.Sleep(1000); bool abortTask = false; if (Environment.TickCount - curTime < (int)curScanTaskInfo.scanPara.scanCount * 2000) { callBack(msgStr, (int)curScanTaskInfo.scanPara.scanCount * 2000, Environment.TickCount - curTime, out abortTask); } //用户取消扫描, 需要根据实际调整 if (abortTask == true) { scanThread.Abort(); curScanTaskInfo.scanSuccessed = false; break; } } if (!curScanTaskInfo.scanSuccessed) { // MessageBox.Show(curScanTaskInfo.ErrorString); } return(curScanTaskInfo.scanSuccessed); }