线程问题如何在for循环10秒循环一次中某一循环,循环5秒就进行下一次循环

那一笑的凄凉 2011-11-25 05:29:03
如何在for循环10秒循环一次中某一循环,循环5秒就进行下一次循环
代码如下
for (var i = 0; i < 10; i++)

Thread.Sleep(TimeSpan.FromSeconds(10));

比如循环到第5次时,不是固定10秒后下一次循环,而是线程等待5秒就进来下一次循环,可以是外界触发。
求代码啊
...全文
494 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
那一笑的凄凉 2011-11-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenandczh 的回复:]
C# code

for (var i = 0; i < 10; i++)

if(i=4)
{
Thread.Sleep(TimeSpan.FromSeconds(5));
}
else
{
Thread.Sleep(TimeSpan.FromSeconds(10));
}

[/Quote]
没明白我的意思啊。我意思是执行了Thread.Sleep(TimeSpan.FromSeconds(10))时,再这个等待线程5秒钟时就让它结束进入下一次循环
  • 打赏
  • 举报
回复
好像是给循环子加个超时限制的意思
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秒!
*********操作已超时, 直接进入下一次循环!**********
*/
abutwang 2011-11-26
  • 打赏
  • 举报
回复
你为什么不用timer呢
Aspx_hkx 2011-11-26
  • 打赏
  • 举报
回复
continue;
绿领巾童鞋 2011-11-25
  • 打赏
  • 举报
回复

for (var i = 0; i < 10; i++)

if(i=4)
{
Thread.Sleep(TimeSpan.FromSeconds(5));
}
else
{
Thread.Sleep(TimeSpan.FromSeconds(10));
}
bobye1230 2011-11-25
  • 打赏
  • 举报
回复

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));
}



PaulyJiang 2011-11-25
  • 打赏
  • 举报
回复
没看明白楼主的意思
阿非 2011-11-25
  • 打赏
  • 举报
回复
what?
那一笑的凄凉 2011-11-25
  • 打赏
  • 举报
回复
不要沉下去,新手,帮帮忙啊大哥们
那一笑的凄凉 2011-11-25
  • 打赏
  • 举报
回复
有木有人啊,路过的帮顶下也行啊,

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧