项目中的代码记录日常

项目中的代码记录日常

/// <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.mfbz.cn/a/766884.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

有哪些好的 Stable Diffusion 提示词(Prompt)可以参考?

Docker 作图咒语生成器 docker-prompt-generator 是一个开源项目&#xff0c;可以利用模型反推出提示词&#xff0c;让你偷偷懒&#xff0c;无需琢磨怎么写prompt&#xff0c;只需要找一个差不多的模型反推一下&#xff0c;直接用就好了&#xff0c;支持支持 MidJourney、Stab…

Go - 9.struct 使用指南

目录 一.引言 二.struct 定义 三.struct 实践 1. 初始化 struct 2. 嵌套 struct 3. func 与 struct 四.struct 进阶 1.Json Tags 2.Other Tags 五.总结 一.引言 在编程中&#xff0c;结构体&#xff08;struct&#xff09;是一种聚合数据类型&#xff0c;用于将多个…

文献解读-长读长测序-第十四期|《作为了解棉花驯化的资源,印度棉(Gossypium herbaceum L. Wagad)基因组》

关键词&#xff1a;基因组&#xff1b;长读长测序&#xff1b;棉花基因组&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;The Gossypium herbaceum L. Wagad genome as a resource for understanding cotton domestication标题&#xff08;中文&#xff…

【HTML入门】列表与表格

文章目录 前言一、列表与表格是什么&#xff1f;列表表格 二、使用标签列表标签表格标签 三、组合情况列表的组合表格的组合 四、示例代码总结 好的&#xff0c;以下是一个关于HTML列表与表格的文章示例&#xff1a; 前言 随着网页开发的普及&#xff0c;HTML成为了构建网页的…

零基础学习MySQL---MySQL入门

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、什么是数据库 问&#xff1a;存储数据用文件就可以了&#xff0c;为什么还要弄个数据库呢&#xff1f; 这就不得不提…

Java面试八股文

一、Redis 1. 使用场景 &#xff08;1&#xff09;Redis的数据持久化策略有哪些 RDB&#xff1a;全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;&#xff0c;也被叫作Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故…

Chapter9 更复杂的光照——Shader入门精要学习笔记

Chapter9 更复杂的光照 一、Unity的渲染路径1.渲染路径的概念2.渲染路径的类型①前向渲染路径a. 前向渲染路径的原理b. Unity中的前向渲染c. 两种Pass ②延迟渲染路径a. 延迟渲染路径的原理b. Unity中的延迟渲染c. 两种Pass ③顶点照明渲染路径 二、Unity的光源类型1.光源类型①…

毫秒级相应逆流检测电表安科瑞防逆流电能表

家庭储能系统 生态环境与人们的日常生活密切相关&#xff0c;越来越多的家庭开始重视居住环境的绿色、环保、智能及可持续性&#xff0c;并采取具体行动。截至2023年&#xff0c;欧洲太阳能发电容量已超200GW&#xff0c;家庭储能系统的安装量呈爆炸性增长。 用户痛点及需求 …

前端基础:JavaaScript(篇二)

目录 内置对象 String字符串 属性 代码 运行 方法 代码 运行 日期 代码 运行 Math 代码 运行 数组 定义 属性 代码 运行 方法 join(分隔符>) &#xff1a; 代码 运行 reverse()&#xff1a; 代码 运行 sort() &#xff1a; 代码 运行 事件 …

有哪些手持小风扇品牌推荐?五大手持小风扇诚意推荐!

在炎炎夏日&#xff0c;一款便携且高效的手持小风扇无疑是消暑的必备神器。为了帮助大家轻松应对酷暑&#xff0c;我们精心挑选了五大手持小风扇品牌进行诚意推荐。这些品牌不仅拥有出色的降温效果&#xff0c;更在外观设计、便携性、续航能力及操作便捷性上表现卓越。接下来&a…

电子邮件OTP验证身份认证接口API服务商比较

电子邮件OTP验证身份认证接口API服务商如何正确选择&#xff1f; 电子邮件OTP验证是一种广泛应用且安全的身份认证方式。AokSend将比较几家主要的电子邮件OTP验证身份认证接口API服务商&#xff0c;帮助企业选择合适的解决方案。 电子邮件OTP&#xff1a;验证优势 可以为用户…

软考高级-系统分析师知识点100条速记!

宝子们&#xff01;上半年软考已经结束一段时间了&#xff0c;准备备考下半年软考高级-系统分析师的小伙伴可以开始准备了&#xff0c;毕竟高级科目的难度可是不低的&#xff0c;相信参加过上半年系分的小伙伴深有体会。 这里给大家整理了100条系分知识点&#xff0c;涵盖全书9…

【SPIE独立出版】第四届智能交通系统与智慧城市国际学术会议(ITSSC 2024)

第四届智能交通系统与智慧城市国际学术会议&#xff08;ITSSC 2024&#xff09;将于2024年8月23-25日在中国西安举行。本次会议主要围绕智能交通、交通新能源、无人驾驶、智慧城市、智能家居、智能生活等研究领域展开讨论&#xff0c; 旨在为该研究领域的专家学者们提供一个分享…

如何在 Java 应用中使用 Jedis 客户端库来实现 Redis 缓存的基本操作

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

【kubernetes】资源调度综合篇,HPA自动扩/缩容等功能

一、标签和选择器 1、标签 命令行操作 # 查看标签 kubectl get [资源类型] [资源名] --show-labels# 修改标签 kubectl label [资源类型] [资源名] [标签名][标签值] --overwrite# 创建标签 kubectl label [资源类型] [资源名] [标签名][标签值]Yalm文件操作 2、选择器 命…

十三、【源码】自动扫描注册Bean

源码地址&#xff1a;https://github.com/spring-projects/spring-framework 仓库地址&#xff1a;https://gitcode.net/qq_42665745/spring/-/tree/13-auto-scan-bean 自动扫描注册Bean 自动扫描Bean流程&#xff1a; 配置文件中配置标签<context:component-scan base-…

数据库管理-第216期 Oracle的高可用-01(20240703)

数据库管理216期 2024-07-03 数据库管理-第216期 Oracle的高可用-01&#xff08;20240703&#xff09;1 MAA简介2 MAA等级2.1 BRONZE2.2 SILVER2.3 GOLD2.4 PLATINUM 3 业务延续性总结 数据库管理-第216期 Oracle的高可用-01&#xff08;20240703&#xff09; 作者&#xff1a;…

巴西市场有哪些电商平台?巴西最畅销的产品有哪些?

巴西&#xff0c;作为南美洲最大的经济体之一&#xff0c;近年来在电子商务领域展现出强劲的增长势头。随着互联网的普及和消费者购物习惯的改变&#xff0c;电商平台在巴西市场上“打”得热火朝天&#xff0c;不过占据市场份额最大的依然还是美客多。本文将探讨巴西市场上的主…

TikTok矩阵管理系统:打造个人品牌的秘密武器

在当今数字化时代&#xff0c;个人品牌的建立对于个人和企业来说都变得至关重要。无论是企业家、自由职业者还是社交媒体个人&#xff0c;都希望能够在竞争激烈的市场中脱颖而出。而TikTok矩阵管理系统正是一个帮助个人打造个人品牌的秘密武器。 TikTok矩阵管理系统是一个集成了…

AI教育行业全景图(最新版);AI时代内容创作者的窘境;2年内AI教育赛道的切入机会;可汗学院创始人「AI教育革命」新书问世 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; 1. 可汗学院 (Khan Academy) 创始人新书发布&#xff1a;AI将如何颠覆传统教育 可汗学院&#xff08;Khan Academy&#xff09;是 Salman Khan 创立的…