项目中的代码记录日常

项目中的代码记录日常

/// <summary>
/// 修改任务状态
/// </summary>
private void StartProcess21()
{Process21Task = new Thread(() =>{while (CommonUtility.IsWorking){try{if (tPAgvTasksList.Count > 0){Parallel.ForEach(tPAgvTasksList, new ParallelOptions() { MaxDegreeOfParallelism = 16 }, 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}");int Id = item.Id;int Sign = 1;// 修改数据库查询标记并保存_repository.UpdateTask(Id, Sign);ListItem = item;});// 移除当前对象tPAgvTasksList.Remove(ListItem);Logger.Info($"当前数据数量为:{tPAgvTasksList.Count()};");}}catch (Exception ex){Logger.Error($"异常信息:{ex.Message}");}// 短暂休眠Thread.Sleep(DormancyTimeCount);}});Process21Task.IsBackground = true;Process21Task.Start();
}

详细解释

  1. 方法定义
private void StartProcess21()
定义了一个名为 StartProcess21 的私有方法,用于启动一个线程来修改任务状态。
  1. 创建线程
Process21Task = new Thread(() =>
创建一个新的线程 Process21Task,并使用 lambda 表达式定义线程的主体。
  1. 循环条件
while (CommonUtility.IsWorking)
线程将在 CommonUtility.IsWorking 为 true 时持续运行。
  1. 异常处理
try
{// 代码块
}
catch (Exception ex)
{Logger.Error($"异常信息:{ex.Message}");
}
使用 try-catch 块捕获可能的异常,并在日志中记录异常信息。
  1. 检查任务列表
if (tPAgvTasksList.Count > 0)
检查 tPAgvTasksList 列表中是否有任务需要处理。
  1. 并行处理任务
Parallel.ForEach(tPAgvTasksList, new ParallelOptions() { MaxDegreeOfParallelism = 16 }, item =>
{// 代码块
});
使用 Parallel.ForEach 并行处理 tPAgvTasksList 中的每个任务,最大并行度为 16
  1. PLC写入操作
PlcDevice1.Write(item.DbChunk, WriteNumber);
PlcDevice2.Write(item.DbChunk, WriteNumber);
Logger.Info($"PLC写入状态 , 偏移量:{item.DbChunk};订单:{item.OrderId};状态:{item.Status}");
向 PlcDevice1 和 PlcDevice2 写入状态,并在日志中记录写入信息。
  1. 更新数据库标记
int Id = item.Id;
int Sign = 1;
_repository.UpdateTask(Id, Sign);
获取任务的 Id 和设置标记 Sign 为 1,然后调用 _repository.UpdateTask 方法更新数据库中的任务标记。
  1. 移除已经处理任务
ListItem = item;
tPAgvTasksList.Remove(ListItem);
Logger.Info($"当前数据数量为:{tPAgvTasksList.Count()};");
将当前处理的任务赋值给 ListItem,然后从 tPAgvTasksList 中移除该任务,并在日志中记录当前任务列表的数量。
  1. 短暂休眠
Thread.Sleep(DormancyTimeCount);
线程休眠一段时间,避免过度占用 CPU 资源。
  1. 设置线程为后台线程并启动
Process21Task.IsBackground = true;
Process21Task.Start();
将 Process21Task 设置为后台线程并启动。

总结
该代码的主要功能是启动一个后台线程,定期检查并处理任务列表中的任务。具体步骤包括:

检查任务列表中是否有任务需要处理。
并行处理每个任务,向 PLC 设备写入状态并更新数据库中的任务标记。
从任务列表中移除已处理的任务。
在日志中记录相关信息。
线程休眠一段时间后继续检查任务列表。
通过这种方式,代码实现了任务状态的异步更新和处理,确保系统的高效运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gitlab push的时候需要密码,你忘记了密码

情景: 忘记密码,且登入网页端gitlab的密码并不能在push的时候使用,应该两者是两个不同的密码 解决方法: 直接设置ssh密钥登入,不使用密码gitlab添加SSH密钥——查看本地密钥 & 生成ssh密钥_gitlab生成ssh密钥-CSDN博客

[OC]萝卜圈Python手动机器人脚本

这是给机器人设置的端口&#xff0c;对照用 代码 # #作者:溥哥’ ##机器人驱动主程序 #请在main中编写您自己的机器人驱动代码 import msvcrt def main():a"none"while True:key_input msvcrt.getch()akey_inputif abw:print(a)robot_drv.set_motors(1,40,2,40,3,…

uniapp学习笔记

uniapp官网地址&#xff1a;https://uniapp.dcloud.net.cn/ 学习源码&#xff1a;https://gitee.com/qingnian8/uniapp-ling_project.git 颜色网址&#xff1a;https://colordrop.io/ uniapp中如何获取导航中的路由信息&#xff1f; onLoad(e){console.log(e)console.log(e.w…

C#根据类的public属性加载类中对应字段的XML

<?xml version"1.0" encoding"utf-8"?> <root><UserLogin ID"0" UserName"" UserPassWord"" Level"1" PowerName"默认用户" PowerID"0" Remark"" IsEnabled"…

java八股文面试题

Java八股文面试题通常涵盖了Java语言的基础知识、高级特性、框架应用、数据库操作等多个方面。以下是一些常见的Java面试题及其详细回答&#xff0c;按照不同的主题进行分类&#xff1a; 一、Java基础 面向对象的特征有哪些&#xff1f; 抽象&#xff1a;忽略与当前目标无关的…

2.2.4 C#中显示控件BDPictureBox 的实现----ROI交互

2.2.4 C#中显示控件BDPictureBox 的实现----ROI交互 1 界面效果 在设定模式下&#xff0c;可以进行ROI 框的拖动&#xff0c;这里以Rect1举例说明 2 增加ROI类定义 /// <summary> /// ROI_single /// 用于描述图片感兴趣区域 /// type: 0:Rect1;1:Rect2;2:Circle ;3:…

C++ //练习 14.31 我们的StrBlobPtr类没有定义拷贝构造函数、赋值运算符及析构函数,为什么?

C Primer&#xff08;第5版&#xff09; 练习 14.31 练习 14.31 我们的StrBlobPtr类没有定义拷贝构造函数、赋值运算符及析构函数&#xff0c;为什么&#xff1f; 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 解释&#xff1a; 因为…

工业路由器与家用路由器的区别

在现代网络环境中&#xff0c;路由器扮演着至关重要的角色。无论是在家庭网络还是在工业网络&#xff0c;选择合适的路由器都至关重要。本文将从多个角度&#xff0c;对工业路由器与家用路由器进行详细比较&#xff0c;帮助您更好地理解二者的区别。 1、安全性 工业路由器&…

大模型应用开发实战基础

大模型应用开发实战基础 1. 背景 大模型如日中天&#xff0c;各行各业都受它影响&#xff0c;但是作为程序员&#xff0c;除了让它翻译代码不知道用它干什么&#xff0c;就像是拿着锤子的木匠&#xff0c;找不到钉子在哪。一边听着别人说2024是AI元年&#xff0c;一边又不知所…

PostgreSQL的系统视图pg_stat_database_conflicts

PostgreSQL的系统视图pg_stat_database_conflicts 在 PostgreSQL 中&#xff0c; pg_stat_database_conflicts 是一个视图&#xff0c;用于监控并发操作导致的数据库冲突情况。了解和监控这些冲突可以帮助数据库管理员调优系统&#xff0c;以更好地处理并发事务。 pg_stat_da…

中控室监控台在水处理行业的作用

随着工业化和城市化的快速推进&#xff0c;水处理行业的重要性日益凸显。作为确保水质安全、提高水资源利用效率的关键环节&#xff0c;水处理厂需要高效、稳定地运行。在这个过程中&#xff0c;中控室监控台发挥着不可或缺的作用。本文将从以下几个方面&#xff0c;详细阐述中…

fyne的MultiLineEntry设置大小

MultiLineEntry设置大小 在另一篇文章讲过&#xff0c;放入border布局中&#xff0c;可以最大化MultiLineEntry。 这里再介绍另一种方法:SetMinRowsVisible() func (e *Entry) SetMinRowsVisible(count int) {e.multiLineRows counte.Refresh() }SetMinRowsVisible强制mult…

(域渗透提权)CVE-2020-1472 NetLogon权限提升漏洞

目录 漏洞简介 漏洞检测 漏洞利用 使用脚本进行利用 使用Mimikatz进行利用 恢复用户哈希 漏洞简介 CVE-2020-1472是继永恒之蓝漏洞之后又一个好用的内网提权漏洞&#xff0c;影响Windows Server2008R2至2019的版本。只要攻击者能够访问到目标域控并且知道域控计算机名即…

九浅一深Jemalloc5.3.0 -- ④浅*配置

目前市面上有不少分析Jemalloc老版本的博文&#xff0c;但最新版本5.3.0却少之又少。而且5.3.0的架构与5之前的版本有较大不同&#xff0c;本着“与时俱进”、“由浅入深”的宗旨&#xff0c;我将逐步分析最新release版本Jemalloc5.3.0的实现。 另外&#xff0c;单讲实现代码是…

ShareSDK iOS端如何实现小红书分享

下载SDK 请登陆官网 &#xff0c;找到SDK下载&#xff0c;勾选需要的平台下载 导入SDK &#xff08;1&#xff09;离线导入将上述下载到的SDK&#xff0c;直接将整个SDK资源文件拖进项目里&#xff0c;如下图&#xff1a; 并且勾选以下3个选项 在点击Finish&#xff0c;…

实时跟踪并显示Docker容器的最新日志

可以用以下命令实时跟踪并显示Docker容器的最新日志 例&#xff1a; 这条命令 docker logs --tail 200 -f docker1 的作用是&#xff1a; docker logs: 这部分指示要查看 Docker 容器的日志。--tail 200: 这个选项指定只显示最后的200行日志。这意味着你将只看到容器最近生…

JavaSE简易版扫雷小游戏

描述&#xff1a;用户输入二维雷区的高和宽&#xff0c;输入确定地雷数&#xff0c;随机在地雷区生成地雷。用户输入横竖坐标进行挖雷&#xff0c;挖到地雷游戏以失败结束&#xff0c;并让用户选择是否再次游戏&#xff1b;没挖到雷&#xff0c;显示该区域8个方向地雷数。如果8…

安徽大学学报-哲学社会科学版

《安徽大学学报》&#xff08;哲学社会科学版&#xff09;简介 安徽大学学报&#xff08;哲学社会科学版&#xff09;简要信息 刊 号 CN 34—1040/C ISSN 1001—5019 主 编 张治栋 地 址 安徽省合肥市肥西路3号 邮 编 230039 电 话 &#xff08;0551&#xff09;6…

Spring MVC的高级功能——异常处理(三)异常处理注解

一、ControllerAdvice注解的作用 从Spring 3.2开始&#xff0c;Spring 提供了一个新注解ControllerAdvice&#xff0c; ControllerAdvice有以下两个作用。 • 注解作用在类上时可以增强Controller&#xff0c;对Controller中被RequestMapping注解标注的方法加一些逻辑处理。…

uniapp + vue3 + Script Setup 写法变动 (持续更新)

一、uniapp 应用生命周期&#xff1a; https://uniapp.dcloud.net.cn/tutorial/vue3-composition-api.html 注意&#xff1a; 应用生命周期仅可在App.vue中监听&#xff0c;在其它页面监听无效。 二 、uniapp页面生命周期&#xff1a; https://uniapp.dcloud.net.cn/tutori…