怎么样控制一个if判断语句的运行时间.

xzjstc86 2012-04-11 09:12:00

例如:

if(x)
{
i++;
j++;
...
...
...
}

我需要让这个循环体执行时间不能超过1秒~ 怎么写判断呢? 超过2秒中就直接跳出这个执行体(也就是说这个if语句最多让他执行2秒)...求解!大神们
...全文
1098 61 打赏 收藏 转发到动态 举报
写回复
用AI写文章
61 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 59 楼 的回复:]

管理员怎么把我的回复删了?
[/Quote]像灌水的 可能就被删了
深海之蓝 2012-04-11
  • 打赏
  • 举报
回复
管理员怎么把我的回复删了?
showlovetome 2012-04-11
  • 打赏
  • 举报
回复


print 'hello world'
Mars 2012-04-11
  • 打赏
  • 举报
回复
都是穿卅小裤衩的人了,还吵了没完。不过还是支持wddw1986:开一个线程,把处理方法放到线程里。
外部计时,时间到了强制杀掉线程。
cheng2005 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 55 楼 的回复:]

为了蹭分,弄一些所谓的回答。
[/Quote]
我一直觉得应该可以把这当成一个严谨一点的谈论问题的地方,但是后来发现无数人就是把这当成一个灌水的地方,给我一种感觉,就是如果我是新手,在这混几天就会彻底完蛋,被指引到不知道哪条沟去了。
深海之蓝 2012-04-11
  • 打赏
  • 举报
回复
有些人总喜欢拿无知当个性。
深海之蓝 2012-04-11
  • 打赏
  • 举报
回复
我还是比较支持wddw1986的。
xzjstc86 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 51 楼 的回复:]
引用 48 楼 的回复:

引用 47 楼 的回复:
引用 46 楼 的回复:

引用 45 楼 的回复:
for(;;)
{
获取当前时间time1;
....
获取当前时间time2;
if((time2-time1)/1000==2)
break;
}


for可以循环获取时间,如果是if或者是其他等待句柄(或者是一个简单的等待消息函数)那怎么或得下面的时间……
[/Quote]

帧的很抽象...实例化是最容易吸收理解的!
cheng2005 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 48 楼 的回复:]

引用 47 楼 的回复:
引用 46 楼 的回复:

引用 45 楼 的回复:
for(;;)
{
获取当前时间time1;
....
获取当前时间time2;
if((time2-time1)/1000==2)
break;
}


for可以循环获取时间,如果是if或者是其他等待句柄(或者是一个简单的等待消息函数)那怎么或得下面的时间呢...时间差局限性太大
……
[/Quote]

分线程是必须的,写在一个方法或者两个方法里有什么区别吗?都是处理一段逻辑

比如,你给自己定个时间,晚上8点之前手上的工作做不完也要停掉。
你可以每做完一件事情,就看看时间,但是你没法知道自己下一次看时间是什么时候,有可能已经是明天了,这肯定不行。
或者,你定一个闹钟,闹钟到了8点会响,你就知道自己该停下了。闹钟是什么,闹钟就是线程。
因为一个线程每一时刻只能做一件事,所以是没办法自己给自己一个时间约束的。
xzjstc86 2012-04-11
  • 打赏
  • 举报
回复
2个函数可以用System.Timers.Timer 实现...但同一函数体里 我很尴尬了...
xzjstc86 2012-04-11
  • 打赏
  • 举报
回复
if (...)//a
...
if (...)//b
...

我现在A的判断条件有一个等待数据的变量,而现在我等待不能过2秒,2秒后不管什么情况我都要执行b判断条件了
xzjstc86 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 47 楼 的回复:]
引用 46 楼 的回复:

引用 45 楼 的回复:
for(;;)
{
获取当前时间time1;
....
获取当前时间time2;
if((time2-time1)/1000==2)
break;
}


for可以循环获取时间,如果是if或者是其他等待句柄(或者是一个简单的等待消息函数)那怎么或得下面的时间呢...时间差局限性太大


楼主,看44楼。
[/Quote]

额...你写的是2个函数了额...我现在的问题执行在一个函数体里.

简单点说就是 我函数体里有一个句柄是有等待时间的,等待回传数据,只有等到回传的数据才会继续往下跑,我现在要做的是把这个等待时间设定为2秒,2秒后不管有没有等到数据,我要继续往下跑.
cheng2005 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 46 楼 的回复:]

引用 45 楼 的回复:
for(;;)
{
获取当前时间time1;
....
获取当前时间time2;
if((time2-time1)/1000==2)
break;
}


for可以循环获取时间,如果是if或者是其他等待句柄(或者是一个简单的等待消息函数)那怎么或得下面的时间呢...时间差局限性太大
[/Quote]

楼主,看44楼。
xzjstc86 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 45 楼 的回复:]
for(;;)
{
获取当前时间time1;
....
获取当前时间time2;
if((time2-time1)/1000==2)
break;
}
[/Quote]

for可以循环获取时间,如果是if或者是其他等待句柄(或者是一个简单的等待消息函数)那怎么或得下面的时间呢...时间差局限性太大

linggan5230 2012-04-11
  • 打赏
  • 举报
回复
for(;;)
{
获取当前时间time1;
....
获取当前时间time2;
if((time2-time1)/1000==2)
break;
}
cheng2005 2012-04-11
  • 打赏
  • 举报
回复
AutoResetEvent evt = new AutoResetEvent(false);

Thread t = new Thread(new ParameterizedThreadStart(test));
t.Name = "我是处理事情的进程";
t.Start(evt);

if (!evt.WaitOne(2000))
{
//两秒内没处理完了
try
{
t.Abort();
Console.WriteLine("超时了");
}
catch (Exception) { }
}
Console.WriteLine("处理完了");


private static void test(object obj)
{
Thread.Sleep(2500);

AutoResetEvent evt = obj as AutoResetEvent;
if (evt != null)
{
evt.Set();
}
}
xzjstc86 2012-04-11
  • 打赏
  • 举报
回复
嗯,看来没人会了....
wy811007 2012-04-11
  • 打赏
  • 举报
回复
过来学习思路 mark
yicship 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 的回复:]
引用 32 楼 的回复:

引用 31 楼 的回复:
引用 29 楼 的回复:

大家别吵了,我谈谈我的看法吧,首先要搞清楚楼主说的是2秒时间到了就跳出这个执行体,跳出执行体之后呢?这个执行体里面的操作对后面的程序有什么影响?如果里面做了什么,对后面影响不大,可以把这段执行体直接放到一个单独线程里,时间一到就终止这个线程,转而执行后续的操作。但如果是这个执行体里的操作对后面影响很大,该怎……
[/Quote]

可能是我太偏执了,觉得不能把坑随意给别人,尤其是当可能别人都很难知道坑会长成什么样的时候,O(∩_∩)O
yicship 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 的回复:]
引用 33 楼 的回复:
关键是什么,楼主是说的“跳出”这个执行体,既然是跳出,那么就得慎重考虑了,O(∩_∩)O


a+1;
b+1;
//for循环执行2秒后跳出执行c+1;
for(..;..;..){...}
c+1;
...
[/Quote]

这个for循环体里面做的事情,对后面会产生什么影响吗
加载更多回复(36)

111,126

社区成员

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

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

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