线程进行定时操作

(1)首先声明Timer变量:

//一定要声明成局部变量以保持对Timer的引用,否则会被垃圾收集器回收!

private System.Threading.Timer timerClose;

(2)在上述自动执行代码后面添加如下Timer实例化代码:

// Create a timer thread and start it

timerClose = new System.Threading.Timer(new TimerCallback(timerCall), this, 5000, 0);

//Timer构造函数参数说明:

Callback:一个 TimerCallback 委托,表示要执行的方法。

State:一个包含回调方法要使用的信息的对象,或者为空引用(Visual Basic 中为 Nothing)。

dueTime:调用 callback 之前延迟的时间量(以毫秒为单位)。指定 Timeout.Infinite 以防止计时器开始计时。指定零 (0) 以立即启动计时器。

Period:调用 callback 的时间间隔(以毫秒为单位)。指定 Timeout.Infinite 可以禁用定期终止。

(3)定义TimerCallback委托要执行的方法:

private void timerCall(object obj)

{

timerClose.Dispose();

this.Close();

}

当然,除了使用上述System.Threading.Timer类的TimerCallback 委托机制外,应该还有很多其他的办法。

另外,这里只是demo了TimerCallback委托的简单应用。

实例如下:

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.Threading;

namespace MYTimerTest、

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

System.Threading.Timer timer = new System.Threading.Timer(new

TimerCallback(timer_Elapsed), null, 0, 1000);

}

void timer_Elapsed(object sender)

{

for (int i = 0; i < 10; i++)

{

Console.Out.WriteLine(DateTime.Now + " " + DateTime.Now.Millisecond.ToString() + "timer in:");

}

}

}

}

注意void timer_Elapsed(object sender)中的“object”对应new System.Threading.Timer(new TimerCallback(timer_Elapsed), null, 0, 1000)中的

第二个参数

原文地址:https://www.cnblogs.com/-NickWang/p/8364912.html

时间: 2024-10-23 02:18:28

线程进行定时操作的相关文章

线程退出前操作

#include <unistd.h> #include <pthread.h> #include <stdio.h> #include <stdlib.h> void cleanup() { printf("cleanup\n"); } void *test_cancel(void) { pthread_cleanup_push(cleanup,NULL); printf("test_cancel\n"); whil

Javascript线程及定时机制

setTimeout.setInterval的使用 Javascript api文档中定义setTimeout和setInterval第二个参数意义分别为间隔多少毫秒后回调函数被执行和每隔多少毫秒回调函数被执行.但随着工作经验的积累,我们发现事实并非如此. 比如 div.onclick=function(){ setTimeout(function(){ document.getElementById('input').focus(); },0); } 就解释不通了,立即执行就立即执行呗,干嘛还

c#中Lock(锁)的研究以及跨线程UI的操作

本文只针对C#中,多线程同步所用到的锁(lock)作为研究对象.由于想更直观的显示结果,所以,在做demo的时候,就把多线程通过事件操作UI的代码也写了出来,留作备忘和分享吧. 其实多线程的同步,使用同步锁的方法用了好多次,今天无意中看到MSDN中,建议用: 1 private static readonly object locker1 = new object(); 2 private readonly object locker2 = new object(); 备注:原文并没有加read

android定时操作

Timer: 代码: Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { //你要做的事... } }, 0, 1000);//0秒后运行.每1秒运行一次 timer.cancel();//取消操作 简写代码: new Timer().schedule(new TimerTask() { @Override public void run() { //你要做的事...

iOS实现多个异步线程同步的操作

设置一个场景,有10个异步线程,当10个异步线程全部完成后,再执行某一项的操作. 使用dispatch_queue的并行队列. 相机而言的就有dispatch_group dispatch_queue_t dispatchQueue = dispatch_queue_create("ted.queue.next", DISPATCH_QUEUE_CONCURRENT); dispatch_group_t dispatchGroup = dispatch_group_create();

2. GCD的使用(线程间通信---子线程执行耗时操作/主线程更新UI)

// // ViewController.m // 07-线程间通信(加载图片,在主线程中更新UI) // // Created by Jasperay on 15/9/3. // Copyright (c) 2015年 @aLonelyRoot3. All rights reserved. // #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UI

Delphi中怎么结束线程(这个线程是定时执行的)(方案二)

上篇博客中提出了一个问题:怎么结束一个定时循环执行的线程,并给出了一个解决方案,但是又出现了一个问题,详细去参考上一篇博客. 然后出去撒了个尿,突然脑子里出现了一个想法(看来工作和思考久了,出去走走,哪怕是去撒个尿,都可能尿出火花,所以工作和学习的时常根本就不等同于效率灵感不是在那里拼命工作.想就能出来的),需要结合上上篇博客:关于FreeOnTerminate的知识 上面所给出的第一种解决方案: 线程(Execute)在执行定时循环:然后先让 DestroyAThread设置 Terminat

Java Concurrency - 线程的基础操作

创建线程 在 Java 中,创建线程有两种方式: 继承 java.lang.Thread 类,重写 run 方法. public class MyJob extends Thread { @Override public void run() { System.out.println("Hello Thread"); } public static void main(String[] args) { Thread thread = new MyJob(); thread.start(

一个双线程下同时操作指针变量导致野指针出现的问题总结

来源:http://blog.csdn.net/lezhiyong 问题: 在某项目的测试过程中,测试在高清压力测试过程中会偶尔出现RSS崩溃现象,崩溃时间不确定,由于在守护进程服务的守护下,RSS崩溃后被重新拉起,所以这个故障在崩溃马上发送时在网管上并没有体现服务停止的告警,只有当测试人员去RSS的var/run目录下找到edum***开头的文件才指定RSS发送崩溃.根据文件中提供的崩溃时间描述,有时是几天前的,有时是几个小时前的,测试人员较难回忆其当时做了什么操作.根据多个edum***文件