C# Timer执行方法

private void button3_Click(object sender, EventArgs e)
{
System.Timers.Timer t = new System.Timers.Timer(500); //实例化Timer类,设置间隔时间为XX毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout); //到达时间的时候执行事件;
t.AutoReset = true; //设置是执行一次(false)还是一直执行(true);
t.Enabled = true; //是否执行System.Timers.Timer.Elapsed事件;

}

/// <summary>
/// 通过原子来判断是否有锁(1代表没有锁,0代表锁)
/// 原子锁跟lock锁相比就是,不会因为其他线程锁住,而阻塞,如果发现锁住就直接跳过。
/// </summary>
public static int iobject = 1;
//递增的值(用来测试的数据)
public static int itestobj = 0;

/// <summary>
/// 调用的事件
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>

public void theout(object source, System.Timers.ElapsedEventArgs e)
{
//原子的值
if (iobject == 1)
{
//该表原子的值让这个变成锁
Interlocked.Exchange(ref iobject, 0);
//模拟真实的方法
Thread.Sleep(200);
Console.WriteLine(itestobj.ToString());
itestobj = itestobj + 1;

//释放锁
Interlocked.Exchange(ref iobject, 1);
}
else
{
//已经锁住就直接跳过。
return ;
}

}

时间: 2024-11-03 21:26:45

C# Timer执行方法的相关文章

iOS 设置 延迟执行 与 取消延迟执行 方法 以及对 run loop 初步认识

之前开发过程中经常会有需求会使用 NSObject中的"performSelector:withObject:afterDelay:"做方法延迟执行的处理, 但是 还没有什么地方需要实现 取消 这个延迟执行方法"cancelPreviousPerformRequestsWithTarget:".(具体可参见系统库文件 NSOject里面两个方法的声明). 但是 我们应该知道在什么条件下,合理使用 延迟 与 取消延迟. 延迟 和 取消延迟 应该 在同一个 事件处理循环

linux下shell脚本执行方法及exec和source命令

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两类:外部命令和内部命令.外部命令是通过系统调用或独立的程序实现的,如sed.awk等等.内部命令是由特殊的文件格式(.def)所实现,如cd.history.exec等等. 在说明exe和source的区别之前,先说明一下fork的概念. fork是linux的系统调用,用来创建子进程(child

线程间操作无效: 从不是创建控件“控件id”的线程访问它。(.net跨线程执行方法)

找了好久资料,终于解决了,特此记录下来. 1 delegate void DelListHandler(string number); /// <summary> /// 按标识删除listview内容 /// </summary> /// <param name="number">标识</param> private void DelListViewLog(string number) { for (int i = 0; i <

js常见执行方法

$(document).load(); 当web页面以及其附带的资源文件,如CSS,Scripts,图片等,加载完毕后执行此方法.常用于检测页面(及其附带资源)是否加载完毕. $(document).ready();当页面DOM对象加载完毕,web浏览器能够运行JS时,此方法即被触发.如果你想尽快执行JS,可以使用此方法.[在html的头部的script标签中的,不处于ready()中的JS代码将早于ready()执行] $(document).unload();此事件在停止浏览页面的时候触发,

使用spring的@Async异步执行方法

应用场景: 1.某些耗时较长的而用户不需要等待该方法的处理结果 2.某些耗时较长的方法,后面的程序不需要用到这个方法的处理结果时 在spring的配置文件中加入对异步执行的支持 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.spri

Spring AOP执行方法

  execution(* springinaction.springidol.Instrument.play(..)) * 代表返回为任意类型 springinaction.springidol.Instrument 代表方法所属的类型 play() 代表执行的方法 (..) 代表执行方法中使用任意参数 execution() 代表在方法执行时触发  

Python开发的3种命令执行方法

在python开发中,我们常常需要执行命令,修改相关信息.那对于初学者来说,python中如何执行命令呢?今天,小编就为大家分享3种python命令执行的方法. 1. 使用os.system("cmd") 在python中,使用os.system("cmd")的最大特点是,其执行时程序会打出cmd在linux上执行的信息. import os os.system("ls") 2. 使用Popen模块产生新的process Popen是现在pyth

iOS的过程方法与执行方法

过程方法与执行方法,官方没有这一说法,属个人总结. 按苹果 cocoa 命名规则,will表将要执行一个动作,内容是准备数据:should表一个动作方法执行前的许可,返回类型多为bool,did表确认行为,执行操作并给出结果. 从这里,可以理解为will为发起方法should类为过程方法,即走个过场,拿个验证(bool),因此,一些大的动作就不能在这类方法中执行.  Should就像钥匙, 当用钥匙开门,如果门好开,验证完,推下钥匙也能打开,类比在should中作些小动作也未尝不可,但如果动作过

java利用线程池(ExecutorService)配合Callable和Future实现执行方法超时的阻断

今天在项目开发中需要用到对执行方法加上时间控制,如果方法执行过长则跳出执行,废话不说,直接上代码,用的是线程池配合Callable和Future方式对执行方法的超时阻断.希望各位牛人指正 //启用线程池 final ExecutorService exec = Executors.newFixedThreadPool(1); Callable<Map<String, String>> call = new Callable<Map<String, String>&