public static void Demo() { DateTime start = DateTime.Now; TimeOutHandle toh = new TimeOutHandle(); toh.TimeoutOccured += new EventHandler(toh_TimeoutOccured); toh.StartTimeOut(new TimeSpan(0, 0, 50)); while (true) { TimeSpan ts = DateTime.Now.Subtract(start); Console.WriteLine(ts.TotalSeconds.ToString()); Thread.Sleep(100); if (ts.TotalSeconds > 20) { break; } if (toh.IsTimeOut) { break; } } }
/// <summary> /// 时间控制器 /// </summary> /// <param name="timeIntvral"></param> 每隔几秒执行一次 /// <param name="maxTime"></param> 最多执行几秒 /// <param name="isFinsh"></param> 循环执行开关 true 不再循环 /// <param name="timeHandle"></param> 循环执行方法 /// <param name="timeOutHandle"></param> 循环超时方法 public static void Handle(int timeIntvral, int maxTime, ref bool isFinsh, TimeHandle timeHandle, TimeOutHandle timeOutHandle) { int initTime = 0; while ((maxTime > initTime) && (!isFinsh)) // '循环等待 { timeHandle(); // '转让控制权,以便让操作系统处理其它的事件。 Thread.Sleep(1000 * timeIntvral); initTime += timeIntvral; } if (!isFinsh) { timeOutHandle(); } }