C#-系统Timer会自动停止,使用线程进行连续性测试

文章速览

  • 概述
  • 代码结构
    • 创建和执行
    • 线程中执行的方法
    • 停止线程
  • 参考文章

坚持记录实属不易,希望友善多金的码友能够随手点一个赞。
共同创建氛围更加良好的开发者社区!
谢谢~

概述

接上片Timer计时器的文章:C#中System.Threading.Timer的使用。
利用周末时间测试了一下System.Threading.Timer的性能,发现两个问题:
1、会出现一些内存泄露的问题,第一天晚上出现了Out of memory的异常,由于是深夜没有第一时间看到线程,早上发现的时候已经中止了,所以还无法完全断定是因为Timer的原因,但后续测试了一下,在跑几个小时后,timer还是会容易出现一些内存泄露的问题,当然我是在里面进行了一些逻辑处理、页面UI的展示和硬件设备的调用;
2、长时间运行后,还是会出现自动停止的现象
故此使用线程进行连续性测试。

代码结构

创建和执行

		//全局变量Thread Looper;private void btnFatigueTest_Click(object sender, EventArgs e){GroupControl(false);btn_FatigueCap.Enabled = false;btn_StopCap.Enabled = true;//硬件执行方法调用//创建线程Looper = new Thread(new ThreadStart(Loop));//执行线程Looper.Start();}

线程中执行的方法

int count = 1;int count2 = 1;bool IsPointB;/// <summary>/// 循环调用方法/// </summary>/// <param name="sender"></param>private void Loop(){while (true){//线程睡眠1000msThread.Sleep(CameraHost.TimeOut);string name = IsPointB ? "B" : "A";IsPointB = !IsPointB;//获取硬件结果var filepath = ....if (File.Exists(filepath)){BeginInvoke(new Action(() => {lb_Count.Text = "次数" + count++;}));}else{MainDeviceProvider.Instance.Logger.Warning($"出错 :{count2++}/{count - 1}");}//主动GC,系统不一定听你的tin               GC.Collect();}}

停止线程

private void btn_StopCap_Click(object sender, EventArgs e){//终止线程Looper.Abort();GroupControl(true);count = 1;btn_FatigueCap.Enabled = true;btn_StopCap.Enabled =  false;}

参考文章

C#多线程——Thread睡眠、中断、合并、暂停与恢复、终止

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

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

相关文章

鸿蒙ArkUI-X跨语言调用说明:【平台桥接(@arkui-x.bridge)】

平台桥接(arkui-x.bridge) 简介 平台桥接用于客户端&#xff08;ArkUI&#xff09;和平台&#xff08;Android或iOS&#xff09;之间传递消息&#xff0c;即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法、平台调用ArkUI侧的方法。 以Android平台为例&#xff0c;Ark…

揭开 SOCKS5 有哪些强大的功能?

在在线隐私和安全领域&#xff0c;SOCKS5 是一种多功能且功能强大的协议&#xff0c;为用户提供了一种无缝的方式来加密他们的互联网流量、绕过防火墙并以增强的匿名性和灵活性访问网络。无论您是担心在线监控、地理封锁还是数据隐私&#xff0c;了解如何利用 SOCKS5 的功能都可…

OpenHarmony 实战开发PhotoView——支持图片缩放、平移、旋转的一个优雅的三方组件

简介 PhotoView是OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&#xff09;系统的一款图片缩放及浏览的三方组件&#xff0c;用于声明式应用开发&#xff0c;支持图片缩放、平移、旋转等功能。 使用场景 PhotoView为广大OpenHarmony应用开发者在处理图片时&#xf…

Git | 用一个简单的例子来说明 git fetch 的作用

如是我闻&#xff1a; git fetch的作用是从远程仓库获取最新的更改&#xff0c;但不合并到本地分支。这事第一次听起来真挺奇怪的&#xff0c;为什么不直接 git pull呢&#xff1f;让我们尝试用一个简单的例子来看看 git fetch 的作用。 场景&#xff1a;玩具盒和玩具店 背景…

材料物理 笔记-9

原内容请参考哈尔滨工业大学何飞教授&#xff1a;https://www.bilibili.com/video/BV18b4y1Y7wd/?p12&spm_id_frompageDriver&vd_source61654d4a6e8d7941436149dd99026962 或《材料物理性能及其在材料研究中的应用》&#xff08;哈尔滨工业大学出版社&#xff09; ——…

lvm概述和配额

lvm概述和配额 文章目录 lvm概述和配额LVM概述1、逻辑卷的作用&#xff1a;2、lvm主要命令和实操磁盘配额创建data目录&#xff0c;进入data目录限制创建文件数 LVM概述 逻辑卷管理liunx系统下对硬盘分区的一种管理机制 lvm机制特别适合管理大储存设备&#xff0c;可以动态的…

linux系统——bg命令,linux运行的级别

在linux中可以使用bg命令&#xff0c;将进程任务置于后台执行 在这里&#xff0c;使用ping www.baidu.com命令后再使用ctrlz&#xff0c;可以将命令先暂停并保留在后台&#xff0c;jobs可以对任务进行查看 使用runlevel可以查看系统当前的运行级别

python练习题-反转一个只有三位数的整数

【问题描述】&#xff1a;反转一个只有三位数的整数 [示例]&#xff1a;123 321 完整代码如下&#xff1a; nint(input()) if n<100 or n>999: print("请输入三位数&#xff01;") else: gen%10 shin//10%10 bain//100 m100*ge10*shibai…

大数据框架总结(全)

☔️ 大数据框架总结&#xff08;全&#xff09; 关注“大数据领航员”&#xff0c;在公众号号中回复关键字【大数据面试资料】&#xff0c;即可可获取2024最新大数据面试资料的pdf文件 一. Hadoop HDFS读流程和写流程 HDFS写数据流程 &#xff08;1&#xff09;客户端通过…

JavaWeb笔记整理+图解——服务器渲染技术之EL表达式与JSTL

上一篇我们讲解了什么是服务器渲染技术和jsp&#xff0c;今天我来整理一下EL表达式和JSTL的笔记与图解&#xff0c;让我们的jsp页面更加的简洁与可维护。 没看过上一期的小伙伴可以看上一期的笔记&#xff1a; JavaWeb笔记全整理——JSP服务器渲染技术-CSDN博客 一、EL表达式…

Git 小白入门到进阶—(基本概念和常用命令)

一.了解 Git 基本概念和常用命令的作用 (理论) 基本概念 1、工作区 包含.git文件夹的目录&#xff0c;主要用存放开发的代码2、仓库 分为本地仓库和远程仓库&#xff0c;本地仓库是自己电脑上的git仓库(.git文件夹);远程仓库是在远程服务器上的git仓库git文件夹无需我们进行操…

Minio实现大文件切片上传

在进行视频、压缩包等大文件上传时&#xff0c;我们有时会遇到上传速度过慢、上传到一半失败等问题。这时我们可以将一个大文件切成若干个小文件依次上传&#xff0c;这样不仅可以看到上传进度&#xff0c;当上传到一半失败时也可以继承上一次的上传进度&#xff0c;而避免了每…

【Unity】 HTFramework框架(四十九)新建脚本时,自动向脚本添加【引用命名空间】

更新日期&#xff1a;2024年5月28日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 自动向脚本添加【引用命名空间】1.新建一个编辑器脚本2.静态构造方法3.标记 InitializeOnLoad4.添加【默认引用命名空间】的规则5.再次新建脚本 自动向脚…

MaxKB,基于 LLM 大语言模型的知识库问答系统,开箱即用,支持快速嵌入到第三方业务系统。

MaxKB 是一款基于 LLM 大语言模型的知识库问答系统。MaxKB Max Knowledge Base&#xff0c;旨在成为企业的最强大脑。开箱即用&#xff0c;支持快速嵌入到第三方业务系统。 项目链接 github.com/1Panel-dev/MaxKB 项目介绍 MaxKB 是一款基于 LLM 大语言模型的知识库问答系统…

opencv学习备份

2019年3月9日 指针地址向后走 int a[5] {1,100,200,300} int *pa –>*p1 –>*p100 指针移动 –> p0x00000000 内存地址 int a1 int *p&a 指针赋值常量&#xff0c;需要加寻址符号 –>*p1 –>*p CV_8UC1&#xff0c;CV_8UC2&#xff0c;CV_8UC3。 (最后的…

Sping源码(九)—— Bean的初始化(非懒加载)— EmbeddedValueResolver

序言 上一篇文章介绍了ConversionService,顺着finishBeanFactoryInitialization主流程继续往下走&#xff0c;这篇文章介绍EmbeddedValueResolver。 源码 源码中关于EmbeddedValueResolver有说到&#xff0c;如果没有BeanPostProcessor则创建一个默认的内嵌的值解析器。那我…

【C++】d1

关键字&#xff1a; 运行、前缀、输入输出、换行 运行f10 前缀必须项&#xff1a; #include <iostream> using namespace std; 输入/输出&#xff1a; cin >> 输入 cout << 输出 语句通过>>或<<分开 换行 endl或者"\n"

了解CSS中的link和@import引入CSS的区别

CSS中的link和import引入CSS的主要区别如下: 1&#xff1a;引入方式: link是HTML标签,用于在HTML文档中引入外部资源,如CSS文件。import是CSS语法,用于在CSS文件中引入其他CSS文件。2&#xff1a;加载顺序: link引入的CSS文件会与HTML文档并行加载,不会阻塞HTML文档的解析。im…

VMware报平台不支持虚拟化Win10家庭版关闭Hyper-V及内核隔离

1.BIOS中开启虚拟化功能 2.启动或关闭程序中找不到Hyper-v 停止 hypervisorlaunchtype&#xff08;Windows Hyper-V 启动加载器&#xff09; 以管理员的身份打开命令行窗口&#xff0c;运行如下命令&#xff0c;关闭停止 Windows Hyper-V 启动加载器 开启 Windows Hyper-V 启…

防火墙基础技术篇:ensp配置防火墙ssh方式登录

防火墙基础技术篇&#xff1a;ensp配置防火墙ssh方式登录 一、SSH 是什么 历史上&#xff0c;网络主机之间的通信是不加密的&#xff0c;属于明文通信。这使得通信很不安全&#xff0c;一个典型的例子就是服务器登录。登录远程服务器的时候&#xff0c;需要将用户输入的密码传…