
项目中的代码记录日常/// summary/// 修改任务状态/// /summaryprivatevoidStartProcess21(){Process21TasknewThread((){while(CommonUtility.IsWorking){try{if(tPAgvTasksList.Count0){Parallel.ForEach(tPAgvTasksList,newParallelOptions(){MaxDegreeOfParallelism16},item{// 判断 一期 或 二期//var StagePlc item.Stage 1 ? PlcDevice1 : PlcDevice2;// 通知PLC动作完成PlcDevice1.Write(item.DbChunk,WriteNumber);PlcDevice2.Write(item.DbChunk,WriteNumber);Logger.Info($PLC写入状态 , 偏移量{item.DbChunk}订单{item.OrderId};状态{item.Status});intIditem.Id;intSign1;// 修改数据库查询标记并保存_repository.UpdateTask(Id,Sign);ListItemitem;});// 移除当前对象tPAgvTasksList.Remove(ListItem);Logger.Info($当前数据数量为{tPAgvTasksList.Count()};);}}catch(Exceptionex){Logger.Error($异常信息{ex.Message});}// 短暂休眠Thread.Sleep(DormancyTimeCount);}});Process21Task.IsBackgroundtrue;Process21Task.Start();}详细解释方法定义privatevoidStartProcess21()定义了一个名为 StartProcess21 的私有方法用于启动一个线程来修改任务状态。创建线程Process21TasknewThread(()创建一个新的线程 Process21Task并使用 lambda 表达式定义线程的主体。循环条件while(CommonUtility.IsWorking)线程将在 CommonUtility.IsWorking 为true时持续运行。异常处理try{// 代码块}catch(Exceptionex){Logger.Error($异常信息{ex.Message});}使用try-catch块捕获可能的异常并在日志中记录异常信息。检查任务列表if(tPAgvTasksList.Count0)检查 tPAgvTasksList 列表中是否有任务需要处理。并行处理任务Parallel.ForEach(tPAgvTasksList,newParallelOptions(){MaxDegreeOfParallelism16},item{// 代码块});使用 Parallel.ForEach 并行处理 tPAgvTasksList 中的每个任务最大并行度为16。PLC写入操作PlcDevice1.Write(item.DbChunk,WriteNumber);PlcDevice2.Write(item.DbChunk,WriteNumber);Logger.Info($PLC写入状态 , 偏移量{item.DbChunk}订单{item.OrderId};状态{item.Status});向 PlcDevice1 和 PlcDevice2 写入状态并在日志中记录写入信息。更新数据库标记intIditem.Id;intSign1;_repository.UpdateTask(Id,Sign);获取任务的 Id 和设置标记 Sign 为1然后调用 _repository.UpdateTask 方法更新数据库中的任务标记。移除已经处理任务ListItemitem;tPAgvTasksList.Remove(ListItem);Logger.Info($当前数据数量为{tPAgvTasksList.Count()};);将当前处理的任务赋值给 ListItem然后从 tPAgvTasksList 中移除该任务并在日志中记录当前任务列表的数量。短暂休眠Thread.Sleep(DormancyTimeCount);线程休眠一段时间避免过度占用 CPU 资源。设置线程为后台线程并启动Process21Task.IsBackgroundtrue;Process21Task.Start();将 Process21Task 设置为后台线程并启动。总结该代码的主要功能是启动一个后台线程定期检查并处理任务列表中的任务。具体步骤包括检查任务列表中是否有任务需要处理。并行处理每个任务向 PLC 设备写入状态并更新数据库中的任务标记。从任务列表中移除已处理的任务。在日志中记录相关信息。线程休眠一段时间后继续检查任务列表。通过这种方式代码实现了任务状态的异步更新和处理确保系统的高效运行。