Visual studio之C# 新建线程与定时器的使用

时间:2022-04-07 23:35:08

背景

App需要开线程和定时器,本文对这两种的通用方法做个记录

正文

线程

  1. 添加命名空间

    using System.Threading;
  2. 创建线程

    //shutdownlazer()即是线程要执行的函数
    Thread shutdownlazer_thread = new Thread(shutdownlazer);
  3. 开启线程

    //shutdownlazer_thread即为第 2 步获取到的线程句柄
    shutdownlazer_thread.Start();
  4. 关闭线程
    线程不需要自己关闭,当shutdownlazer()函数运行完退出了,线程也就自然关闭了。当然,若是关闭主窗口,则线程一定要关闭,可在主窗口关闭事件中调用函数关闭所有线程,

    // 窗口关闭,关闭所有线程
    private void Mainwin_FormClosing(object sender, FormClosingEventArgs e)
    {
    System.Environment.Exit(0);
    }

定时器

  1. 添加命名空间

    using System.Timers;
  2. 实例化一个定时器

    private static System.Timers.Timer RUtimer;
  3. 创建定时器并设定定时器参数

    // 创建一个100ms定时的定时器
    RUtimer = new System.Timers.Timer(100); // 参数单位为ms
    // 定时时间到,处理函数为OnTimedUEvent(...)
    RUtimer.Elapsed += OnTimedUEvent;
    // 为true时,定时时间到会重新计时;为false则只定时一次
    RUtimer.AutoReset = true;
    // 使能定时器
    RUtimer.Enabled = true;
    // 开始计时
    RUtimer.Start();

    此处需要注意的是,当让系统自动添加OnTimedUEvent(...)函数时,自动生成的函数如下,

    void OnTimedUEvent(object sender, ElapsedEventArgs e)
    {
    throw new NotImplementedException();
    }
    throw new NotImplementedException();此句是为了提醒我们来实现该定时器的代码,若不将该代码注释,则APP实际运行起来,定时器时间一到,就会在此处抛出异常。
  4. 停止定时器

    RUtimer.stop();

至此记录完毕。

参考链接

记录时间:2017-5-9
记录地点:深圳WZ