首页 > 编程语言 >C# stop thread after specified timespan

C# stop thread after specified timespan

时间:2024-09-10 18:46:36浏览次数:11  
标签:tmr Console thread timespan C# System t1 WriteLine using

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApp72
{
    internal class Program
    {
        static Thread t1 { get; set; }
        static System.Timers.Timer tmr { get; set; }
        static void Main(string[] args)
        {
           
            try
            {
                tmr = new System.Timers.Timer();
                tmr.Elapsed += Tmr_Elapsed;
                tmr.Interval = 5000;
                tmr.Start();
                t1 = new Thread(() =>
                {
                    PrintNum(10);
                });
                t1.Start();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("Hello, World!");
            Console.ReadLine();
        }

        private static void Tmr_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            try
            {
                if(t1.IsAlive)
                {
                    Console.WriteLine("t1 aborted!");
                    t1.Abort();
                    tmr.Stop();
                    Console.WriteLine("Timer stopped!");
                }                
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        static void PrintNum(int num)
        {
            for (int i = 0; i < num; i++)
            {
                Console.WriteLine(i);
                Thread.Sleep(1000);
            }
        }
    }
}

 

标签:tmr,Console,thread,timespan,C#,System,t1,WriteLine,using
From: https://www.cnblogs.com/Fred1987/p/18406950

相关文章

  • C++:使自定义类支持迭代器
    概述在C++中,链表迭代器是一种用来遍历链表(如std::list)元素的工具。链表是一种数据结构,其中每个元素(节点)包含一个数据值和一个指向下一个节点的指针。链表迭代器允许以类似于数组的方式访问链表中的元素,但不需要直接操作指针。链表迭代器的作用访问元素:链表迭代器使你能够......
  • Docker介绍及其在WSL中的应用
    Docker介绍及其在WSL中的应用 New_Teen  ·  2023-06-0121:50:20发布https://devpress.csdn.net/cloudnative/66d581dd0bfad230b8b389ba.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTg2OTk4NSwiZXhwIjoxNzI2NTY4MDY3LCJpYXQiOjE3MjU5NjMyNjcsInV......
  • Rocky9
    RockyLinux9.4部署Zabbix7.01-1.检测源wgethttps://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm#下载epel的源rpm-ivhepel-release-latest-8.noarch.rpm#epel安装rpm-Uvhhttps://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-7......
  • 如何将Go项目制作为docker镜像
    在Go项目中,将应用打包成Docker镜像是一种常见的做法,这有助于应用的部署和环境的一致性。下面,我将分步骤介绍如何创建一个Dockerfile来打包Go应用,并简要介绍如何使用goctl工具(尽管goctl主要用于生成Go的RPC代码,而不是直接用于Docker镜像的构建)。1.编写DockerfileDockerfile是构......
  • 第5讲:Halcon 测量点线距离
    一、概述    点线距离测量在3D测量项目中处于基础地位,必须要掌握。以下为可直接运行的代码。二、效果        三、Halcon代码*初始化窗口dev_update_off()dev_close_window()dev_open_window(0,0,768,512,'black',WindowHandle)*给点的大小......
  • C++ 多线程详解:从基础到应用
    目录一、什么是多线程?二、C++中的多线程支持三、总结在现代应用中,多线程成为了提升程序性能的重要工具。特别是当我们希望充分利用多核CPU的计算能力时,C++提供了强大的多线程支持,可以并发地执行多个任务。今天,我们将通过易懂的讲解与实际的代码示例,帮助你掌握C+......
  • LeetCode之数组/字符串
    88.合并两个有序数组classSolution{publicvoidmerge(int[]nums1,intm,int[]nums2,intn){//这个循环将nums2中的元素逐个复制到nums1中从索引m开始的位置for(inti=0;i<n;i++){nums1[i+m]=nums2[i];......
  • OpenCV 与 Matplotlib 的结合使用:轮毂检测与目标跟踪
    目录绘制轮廓图像实现思路1.读取图像并转换为灰度图像2.二值化处理3.查找轮廓4.绘制轮廓5.显示结果代码实现效果展示动态逐步显示轮廓结果实现思路1.读取图像并缩放2.转换为灰度图像3.二值化处理4.查找轮廓5.动态显示轮廓6.显示最终结果并关闭窗口......
  • OpenCV 与 YoloV3的结合使用:目标实时跟踪
    目录代码分析1.YOLO模型加载2.视频加载与初始化3.视频帧处理4.物体检测5.处理检测结果6.边界框和类别显示7.帧率(FPS)计算8.结果显示与退出9.资源释放整体代码效果展示总结代码分析这段代码使用YOLO(YouOnlyLookOnce)模型进行视频中的物体检测,并通......
  • navicat无法连接远程的mysql--Host ‘xx.xx.xx.xx‘ is not allowed to connect to th
     之前在远程虚拟机上面部署了mysql,想在本地客户端使用navicat连接数据库,结果提示:host'xxx'isnotallowedtoconnecttothismysqlserver   解决出现这个提示,是由于我们使用root用户登录时,没有给root用户设置能访问的机器,所以我们设置一下,就可以了。 1:登录mysq......