示例#1
0
        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;
                }
            }
        }
示例#2
0
        /// <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();
            }
        }