从头开始C#中多进程任务内存泄漏debug

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

最近在做一个多线程图像采集与检测程序的界面,由于要与相机、PLC、后端推理程序打交道,使用了多线程技术。由于对C#不熟,应用中产生了内存泄漏。记录下解决的过程。程序如下:

namespace WinFormsApp1
{
    public partial class mainForm : Form
    {
        private Channel channel;

        private CancellationTokenSource cts = new CancellationTokenSource();
        private ConcurrentQueue<Mat> imageQueue = new ConcurrentQueue<Mat>();
        private ConcurrentQueue<string> plcCommandQueue = new ConcurrentQueue<string>();


        public mainForm()
        {
            InitializeComponent();
            InitializeThreads();
        }


        private void InitializeThreads()
        {
            cts = new CancellationTokenSource();

            // 启动相机采集线程  
            Task.Run(() => CameraCaptureLoop(cts.Token), cts.Token);

            // 启动图像处理与推理线程(模拟)  
            Task.Run(() => ImageProcessingLoop(cts.Token), cts.Token);

            // 可以在这里添加PLC通信线程,但这里仅模拟  

            // UI线程将定期从plcCommandQueue中读取命令并显示  
            System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
            timer.Interval = 1000; // 每秒检查一次PLC命令  
            timer.Tick += (sender, e) => UpdateUI();
            timer.Start();
        }

        private void CameraCaptureLoop(CancellationToken token)
        {
    

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值