关于ThreadPool.RegisterWaitForSingleObject和WaitHandle的应用介绍

 

public static RegisteredWaitHandle RegisterWaitForSingleObject (
	WaitHandle waitObject,
	WaitOrTimerCallback callBack,
	Object state,
	int millisecondsTimeOutInterval,
	bool executeOnlyOnce
)

第一个参数是waithandle类。一般是autoresetevent或者manuresetevent。
第二个是一个委托,签名如下public delegate void WaitOrTimerCallback (
	Object state,
	bool timedOut
)
第三个参数传入该委托。
第四个是间隔时间。
第五个是是否只执行一次。

此方法有点类似timer控件。  RegisterWaitForSingleObject 方法检查指定对象的 WaitHandle 的当前状态,如果对象状态为非终止状态,则方法将注册一个等待操作此等待操作由线程池中的一个线程来执行。当对象状态变为终止或超时间隔已过期时,委托由辅助线程执行。如果 timeOutInterval 参数不为零 (0) 并且 executeOnlyOnce 参数为 false,则每当事件收到信号或超时间隔已过时都会重置计时器。 。     static AutoResetEvent auto = new AutoResetEvent(true);         static ManualResetEvent manu = new ManualResetEvent(false);          static void Main(string[] args)         {             ThreadPool.RegisterWaitForSingleObject(manu, Go, "ppp", 2000, false);             Thread.Sleep(6000);             //manu.WaitOne();         }          static void Go(object data, bool timeout)         {                         Console.WriteLine(DateTime.Now.ToLongTimeString());                                               }

 

你可能感兴趣的:(thread,职场,休闲)