C#线程倒计时器源码分享

作者:王子先生 时间:2023-08-16 07:23:36 

本文实例为大家分享了C#线程倒计时器源码,供大家参考,具体内容如下


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace ListZZBG
{
class TimeHeleper
{
Thread thread;
private TimeSpan time; //计时时间
private TimeSpan endTime; //到点时间
private Label lb;
private bool whereExit = true;

/// <summary>
/// 设定计时器计时的时间
/// </summary>
/// <param name="StartTime">计时器时间,如:01:00:00 既1小时</param>
public TimeHeleper(TimeSpan StartTime, Label lb)
{
time = StartTime;
this.lb = lb;
}

public void ShowLabel()
{
lb.Text = time.ToString();
}

/// <summary>
/// 获取时间
/// </summary>
/// <returns></returns>
public TimeSpan GetTime()
{
return time;
}

/// <summary>
/// 开启计时器
/// </summary>
public void Open()
{
//计算到点时间
TimeSpan tsNow = TimeSpan.Parse(DateTime.Now.ToString("HH:mm:ss"));
TimeSpan tsAdd = time;
endTime = tsNow + tsAdd;
//线程开始
whereExit = false;
thread = new Thread(TimeThreadStart);
thread.IsBackground = true;
thread.Start();
}

/// <summary>
/// 关闭计时器
/// </summary>
public void Close()
{
whereExit = true;
thread.Join(1000);
}

private void TimeThreadStart()
{
while (!whereExit)
{
RunTime();
Thread.Sleep(1000);
}
}

private delegate void RunTimeDelegate();
private void RunTime()
{
if (lb.InvokeRequired)
{
RunTimeDelegate d = RunTime;
lb.Invoke(d);
}
else
{
time = endTime - TimeSpan.Parse(DateTime.Now.ToString("HH:mm:ss"));
string[] sp = time.ToString().Split(':');
lb.Text = sp[2].ToString(); //liable1控件
}
}
}

}

来源:https://www.cnblogs.com/pang572936554/p/8249882.html

标签:C#,倒计时
0
投稿

猜你喜欢

  • 浅谈Java中的Queue家族

    2021-12-23 08:36:49
  • IntelliJ IDEA Run时报“无效的源发行版:16“错误问题及解决方法

    2022-06-04 18:08:35
  • 举例解析Java的设计模式编程中里氏替换原则的意义

    2021-06-30 18:37:17
  • 利用Java自写一个生成ID的工具类

    2023-04-24 04:10:08
  • IDEA 2019.1.3 激活码大全

    2023-05-09 05:20:37
  • C# SkinEngine控件 给窗体添加皮肤的方法

    2021-10-21 23:32:08
  • Spring-Bean创建对象的步骤方式详解

    2023-04-12 22:00:47
  • Java日常练习题,每天进步一点点(42)

    2022-10-28 01:42:54
  • Android使用自定义属性实现图片自动播放滚动的功能

    2023-04-13 18:51:49
  • java基础的详细了解第七天

    2023-02-01 12:06:26
  • java实现Socket通信之单线程服务

    2022-08-24 14:41:06
  • 全面分析Java文件上传

    2021-12-09 13:22:52
  • C# PDF Page操作设置页面切换按钮的方法

    2021-11-18 04:33:43
  • 详解java 三种调用机制(同步、回调、异步)

    2023-11-25 07:59:57
  • Hibernate中Session增删改查操作代码详解

    2022-12-25 17:14:22
  • 全面解析JTA 深度历险

    2022-04-17 10:58:43
  • Spring Boot thymeleaf模板引擎的使用详解

    2022-07-27 07:42:54
  • Flutter状态管理Provider示例解析

    2023-02-10 07:09:17
  • 详细解读C++编程中的匿名类类型和位域

    2023-11-02 23:08:18
  • c++中vector<int>和vector<int*>的用法及区别

    2023-03-28 02:29:37
  • asp之家 软件编程 m.aspxhome.com