private void btnDeal_Click(object sender, EventArgs e) { btnDeal.Enabled = false; if (lstWrapper == null) { lstWrapper = new List <LotReaderThreadWrapper>(); } lotReaderAction.OnLotReaderFinished += new EventHandler <LotReaderFinishedArgs>(DataTransferFinished); //获取配置节信息 this._section = (LotReaderConfigurationSection)ConfigurationManager.GetSection("mes.reader"); //增加线程个数。 foreach (LotReaderDeviceElement element in this._section.Devices) { ParameterizedThreadStart threadStart = new ParameterizedThreadStart(DealData); LotReaderThreadWrapper wrapper = new LotReaderThreadWrapper(element, threadStart); lstWrapper.Add(wrapper); } //启动线程。 foreach (LotReaderThreadWrapper wrapper0 in lstWrapper) { //StartTransfer(); Thread.Sleep(100); wrapper0.Start(); } }
private void DealData(object obj) { try { LotReaderThreadWrapper wrapper = obj as LotReaderThreadWrapper; if (wrapper == null) { return; } DealData(wrapper); } catch (Exception ex) { } }
/// <summary> /// 数据转置 /// </summary> private void DealData(LotReaderThreadWrapper wrapper) { while (wrapper.Loop) { try { if (queue != null && queue.Count > 0) { LotReaderDeviceElement lotinfo = new LotReaderDeviceElement(); lock (queue) { //获取读头配置信息 lotinfo.ReaderIP = queue.Peek().ReaderIP; lotinfo.LineCode = queue.Peek().LineCode; lotinfo.LotNumber = queue.Peek().LotNumber; lotinfo.FirstStepCode = queue.Peek().FirstStepCode; lotinfo.FirstEquipmentCode = queue.Peek().FirstEquipmentCode; lotinfo.SecondStepCode = queue.Peek().SecondStepCode; lotinfo.SecondEquipmentCode = queue.Peek().SecondEquipmentCode; lotinfo.WorkShop = queue.Peek().WorkShop; lotinfo.WorkShopId = queue.Peek().WorkShopId; lotinfo.FlowId = queue.Peek().FlowId; lotinfo.FlowSubId = queue.Peek().FlowSubId; DateTime dtStartTime = DateTime.Now; //执行过站操作 lotReaderAction.Execute(lotinfo); //请除队列中执行的批次信息 queue.Dequeue(); } } } catch (Exception ex) { } if (wrapper.Loop) { Thread.Sleep(1000); } } wrapper.AutoResetEvent.Set(); }