精选文章 多线程TimerCallBack

多线程TimerCallBack

作者:dianzudi1839 时间: 2021-07-06 09:11:14
dianzudi1839 2021-07-06 09:11:14
【摘要】
                     
 在窗体的Lable控件中显示时间。 
  
 Form中内容: 
 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using Sy...

在窗体的Lable控件中显示时间。


Form中内容:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Timers;using timeLib;namespace TEST{ public partial class Form1 : Form { public delegate void UpdateTextHandler(DateTime now); //UpdateTextHandler委托声明 timerLib libTime; public Form1() { InitializeComponent(); libTime = new timerLib(); libTime.OnTimeChange += new OnTimerChangeHandler(Ontimechange); //OnTimeChange注册 libTime.start(); } private void Ontimechange(DateTime now) { updateText(now); } private void button1_Click(object sender, EventArgs e) { libTime.stop(); this.Close(); } private void updateText(DateTime now) { if (this.InvokeRequired) { this.Invoke(new UpdateTextHandler(updateText), new object[] { now }); //?????? } else { lbTime.Text = libTime.now.ToLongTimeString(); } } }}

 


另一个自己添加的类库中的TimeLab类中的内容:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace timeLib{ public delegate void OnTimerChangeHandler(DateTime now); public class timerLib { System.Threading.Timer m_timer; public DateTime now; public event OnTimerChangeHandler OnTimeChange; public timerLib() { } private void timer_run(object o) { now = DateTime.Now; if (OnTimeChange != null) { OnTimeChange(now); //OnTimeChange事件触发 } } public void start() { TimerCallback t_back = new TimerCallback(timer_run);//委托定义 m_timer = new Timer(t_back, null, 1000, 1000); //callback // } public void stop() { m_timer.Dispose(); m_timer = null; } }}

其中System.Thread;中的Timer定时器的使用。http://kb.cnblogs.com/page/42532/Timer类:设置一个定时器,定时执行用户指定的函数。

定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数

初始化一个Timer对象: 

Timer timer = new Timer(timerDelegate, s,1000, 1000); 

// 第一个参数:指定了TimerCallback 委托,表示要执行的方法;

// 第二个参数:一个包含回调方法要使用的信息的对象,或者为空引用;

// 第三个参数:延迟时间——计时开始的时刻距现在的时间,单位是毫秒,指定为“0”表示立即启动计时器;

// 第四个参数:定时器的时间间隔——计时开始以后,每隔这么长的一段时间,TimerCallback所代表的方法将被调用一次,单位也是毫秒。指定 Timeout.Infinite 可以禁用定期终止。Timer.Change()方法:修改定时器的设置。(这是一个参数类型重载的方法) 

转载于:https://www.cnblogs.com/cpcpc/archive/2010/04/14/2123137.html

勿删,copyright占位
您找到想要的结果了吗?
多线程TimerCallBack
提交成功!非常感谢您的反馈,我们会继续努力做到更好
分享文章到微博
分享文章到朋友圈

上一篇:双表关联,非唯一字段的update

下一篇:Eclipse下SSH集成(JPA)

您可能感兴趣

  • 使用多线程模拟多用户并发访问一个或多个tomcat,测试性能

    package test;import java.net.HttpURLConnection;import java.net.SocketTimeoutException;import java.net.URL;import java.net.URLConnection;import java.util.concurrent.CountDownLat...

  • Java 多线程同步问题的探究(四、协作,互斥下的协作——Java多线程协作(wait、notify、notifyAll))...

    Java监视器支持两种线程:互斥和协作。 前面我们介绍了采用对象锁和重入锁来实现的互斥。这一篇中,我们来看一看线程的协作。 举个例子:有一家汉堡店举办吃汉堡比赛,决赛时有3个顾客来吃,3个厨师来做,一个服务员负责协调汉堡的数量。为了避免浪费,制作好的汉堡被放进一个能装有10个汉堡的...

  • 多线程的队列----BlockingQueue

    import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** ...

  • 多线程之线程状态

    操作系统的多任务 有两种实现多任务的方法,这取决于操作系统在中断程序时的行为——直接中断而不需要事先和被中断的程序协商,还是只有在被中断程序同意交出控制权之后才能执行中断。前者称为抢占式多任务,后者称为协作(非抢占式)多任务。抢占式多任务更加有效,但实现起来难度较大。而在协作多任务机制下,一个行为不当的程序可能会独占所有资源,导致其他所有程序无法...

  • 多线程的那点儿事(之生产者-消费者)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 生产者-消费者是很有意思的一种算法。它的存在主要是两个目的,第一就是满足生产者对资源的不断创造;第二就是满足消费者对资源的不断索取。当然,因为空间是有限的,所以资源既不能无限存储,也不能无限索取。 生产者的算法, WaitF...

  • 多线程通信实例(子线程向主线程:用委托事件实现)

    1using System;2using System.Threading;34namespace ifan5{6//自定义委托声明7publicdelegatevoid childExitDelegate(object sender, ChildExitEventArgs e);89publicclass TDelegate10{11//自定...

  • 我学Delphi心得与笔记-------多线程实例

    关于线程的原理:其实并没有真正的多线程,所谓的多线程只不过是CPU的执行效率高,将任务分成多个点,基本能达到同时执行的效果. 关于Delphi下的多线程的应用需要说明的是:同时开启的线程数以及线程执行的方法都会影响cpu的执行效率,一般的情况下,能不用线程就不要用;下面写一个Delphi的多线和应用的例子: ---------------...

  • Android笔记——Day2 *Java中类的继承 *多线程Handler

    1、Java中类的继承。 ··Java中类的继承所产生的访问权限的问题和C++中不太一样。 ··Java中多了一个包的概念。类中成员的访问权限多了一个default的访问权限。(默认不写的访问权限) ··在Java同一个包中,只要成员不是以private修饰的,包中类与类之间都可以相互访问。 ··一个类只有声明为public才可以被其...

CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。
多线程TimerCallBack介绍:华为云为您免费提供多线程TimerCallBack在博客、论坛、帮助中心等栏目的相关文章,同时还可以通过 站内搜索 查询更多多线程TimerCallBack的相关内容。| 移动地址: 多线程TimerCallBack | 写博客