private static void Host_PostBatch(object sender, Chromium.Remote.Event.CfrV8HandlerExecuteEventArgs e) { UpdateBatchParam(e); Task.Factory.StartNew(() => { try { int index = -1; CardBatch batchReceived = null; foreach (CardInfo item in CardManager.CardInfos) { if (item.Id == 0 && item.CardType < 3) { index += 1; item.CardTime = CardManager.BatchParam.CardTime; item.CardDistance = CardManager.BatchParam.CardDistance; item.ParkingRestrictions = CardManager.BatchParam.ParkingRestrictions; item.CardPartition = CardManager.BatchParam.CardPartition; byte[] by = DistanceIssue.Issue(item); bool ret = SerialPortManager.WriteSerialPortData(SerialPortManager.Device1, by); if (ret) { ReceivedManager.SetReceivedFunction <CardBatch>(); if (batchReceived == null) { batchReceived = ReceivedManager.GetReceivedFun <CardBatch>(); } batchReceived.IssueInfo = item; for (int i = 0; i < 250; i++) { Thread.Sleep(10); if (batchReceived.IssueInfo == null) { if (item.Id > 0) { ViewCallFunction.ViewDisplayBatchContent(item, index); } break; } } } } } } catch (Exception ex) { Log4Helper.ErrorInfo(ex.Message, ex); ViewCallFunction.ViewAlert(ex.Message); } finally { int count = CardManager.CardInfos.Where(w => w.Id == 0 && w.CardType < 3).Count(); ViewCallFunction.ViewBatchOver(count); } }); }