日期:2014-05-18 浏览次数:21525 次
bool bChange = false; //定义全局变量,然后提供接口从外部可以设置bChange的值 for (var i = 0; i < 10; i++) { if(bChange) { bChange = false; Thread.Sleep(TimeSpan.FromSeconds(5)); } else { Thread.Sleep(TimeSpan.FromSeconds(10)); } }
------解决方案--------------------
for (var i = 0; i < 10; i++) { if(i=4) { Thread.Sleep(TimeSpan.FromSeconds(5)); } else { Thread.Sleep(TimeSpan.FromSeconds(10)); } }
------解决方案--------------------
continue;
------解决方案--------------------
你为什么不用timer呢
------解决方案--------------------
好像是给循环子加个超时限制的意思
private AutoResetEvent autoEvent = new AutoResetEvent(false); public void TestTimeLimit() { int timeOut = 2; for(int i=1; i<=5; i++) { Console.WriteLine("第{0}次循环, 限时{1}秒!", i, timeOut); Thread t = new Thread(new ParameterizedThreadStart( (evt) => { var sw = new System.Diagnostics.Stopwatch(); sw.Start(); Thread.Sleep(new Random().Next(100, 4000)); sw.Stop(); if ( sw.ElapsedMilliseconds / 1000 < timeOut) { Console.WriteLine("正在执行操作..本次耗时:{0}毫秒!", sw.ElapsedMilliseconds); ((AutoResetEvent)evt).Set(); //发出通知信号 } })); t.Start(autoEvent); if (this.autoEvent.WaitOne(TimeSpan.FromSeconds(timeOut), false)) Console.WriteLine("本次操作没有超时!\r\n"); else { Console.WriteLine("*********操作已超时, 直接进入下一次循环!**********\r\n"); continue; } } } /* 第1次循环, 限时2秒! *********操作已超时, 直接进入下一次循环!********** 第2次循环, 限时2秒! 正在执行操作..本次耗时:605毫秒! 本次操作没有超时! 第3次循环, 限时2秒! 正在执行操作..本次耗时:1218毫秒! 本次操作没有超时! 第4次循环, 限时2秒! *********操作已超时, 直接进入下一次循环!********** 第5次循环, 限时2秒! *********操作已超时, 直接进入下一次循环!********** */