項目中的代碼記錄日常

項目中的代碼記錄日常

/// <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.pswp.cn/web/38574.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38574.shtml
英文地址,請注明出處:http://en.pswp.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…