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 ;
}

}

转载于:https://www.cnblogs.com/zhian/p/5041002.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值