System.Threading.Timer线程通讯

using System;

using System.Threading;

class TimerExample

{

static void Main()

{

// Create an event to signal the timeout count threshold in the // timer callback.

AutoResetEvent autoEvent = new AutoResetEvent(false);

StatusChecker statusChecker = new StatusChecker(10);

// Create an inferred delegate that invokes methods for the timer.

TimerCallback tcb = statusChecker.CheckStatus;

// Create a timer that signals the delegate to invoke

// CheckStatus after one second, and every 1/4 second

// thereafter.

Console.WriteLine("{0} Creating timer.\n", DateTime.Now.ToString("h:mm:ss.fff"));

Timer stateTimer = new Timer(tcb, autoEvent, 1000, 250);

// When autoEvent signals, change the period to every // 1/2 second.

autoEvent.WaitOne(5000, false);

stateTimer.Change(0, 500);

Console.WriteLine("\nChanging period.\n");

// When autoEvent signals the second time, dispose of // the timer.

autoEvent.WaitOne(5000, false);

stateTimer.Dispose();

Console.WriteLine("\nDestroying timer.");

}

}

class StatusChecker

{

private int invokeCount;

 private int maxCount;

public StatusChecker(int count)

{

invokeCount = 0; maxCount = count;

}

// This method is called by the timer delegate.

public void CheckStatus(Object stateInfo)

{

AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;

Console.WriteLine("{0} Checking status {1,2}.", DateTime.Now.ToString("h:mm:ss.fff"), (++invokeCount).ToString());

 if(invokeCount == maxCount)

{

 // Reset the counter and signal Main.

invokeCount = 0; autoEvent.Set();

}

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值