Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }