怎么样控制一个if判断语句的运行时间. 例如:if(x){ i++; j++; ... ... ...}我需要让这个循环体执行时间不能超过1秒~ 怎么写判断呢? 超过2秒中就直接跳出这个执行体(也就是说这个if语句最多让他执行2秒)...求解!大神们 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //时间计算DateTime dt = DateTime.Now;你的代码.... DateTime dt2 = DateTime.Now; TimeSpan ts = dt2 - dt; double Mill = ts.TotalMilliseconds; MessageBox.Show(Math.Round(Mill / 1000, 3).ToString()+"毫秒"); DateTime dt = DateTime.Now; if(x) { TimeSpan ts = DateTime.Now - dt; if (ts.Seconds > 2) { break; } i++; j++; ... ... ...} 计算机一秒钟能执行百万条指令,你的if语句大可放心,肯定能在1秒内执行完毕除非是死循环了硬要实现它也可以。设置一个变量flag=false一个计时器 当计时器到达两秒是flag=trueif语句根据flag来执行,flag为真则停止。但没这必要! DateTime d1 = DateTime.Now;if(x){ i++; j++; ... ... ...}DateTime d2 = DateTime.Now;TimeSpan计算d1,d2时间差 第一,if中每个环节计算一次时间差,如果超过1秒,return第二,开一个线程,timer计时,到点终止线程 再大的操作都一样,只要需求说要终止那就要终止。至于后续怎么处理,那就是后面的事情了。就好像你Copy一堆文件,执行一半的时候终止了,你怎么办?重新Copy还是算了不弄了,一切取决于你自己。因为终止是你决定的,那么后续怎么办也一样是要你来决定。 这样把:......a=b+1;b=c+1;c=d+1;//for循环体只能运行2秒,2秒后就直接到下面 d=e+1;for(..;..;..){...}d=e+1;......怎么写呢...我现在在写计数器! a+1;b+1;//for循环执行2秒后跳出执行c+1;for(..;..;..){...}c+1;... 这个for循环体里面做的事情,对后面会产生什么影响吗 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(); } } for(;;){ 获取当前时间time1; .... 获取当前时间time2; if((time2-time1)/1000==2) break;} for可以循环获取时间,如果是if或者是其他等待句柄(或者是一个简单的等待消息函数)那怎么或得下面的时间呢...时间差局限性太大 if (...)//a ... if (...)//b ...我现在A的判断条件有一个等待数据的变量,而现在我等待不能过2秒,2秒后不管什么情况我都要执行b判断条件了 2个函数可以用System.Timers.Timer 实现...但同一函数体里 我很尴尬了... 都是穿卅小裤衩的人了,还吵了没完。不过还是支持wddw1986:开一个线程,把处理方法放到线程里。外部计时,时间到了强制杀掉线程。 如果不想打乱程序流程//前戏 System.Threading.Thread thread = System.Threading.Thread.CurrentThread; System.Timers.Timer timer = new System.Timers.Timer(1000); timer.Elapsed += (sender, e) => { timer.Stop(); if (thread != null) thread.Abort(null); }; timer.Start(); try { //战斗中 thread = null; } catch (ThreadAbortException) { Thread.ResetAbort(); } //后戏 如何将 CookieContainer 转换成字符串保存起来 再转换回来 C# Winform一个问题 winform 触发器 怎样在关闭网页时,释放一个static的值 C#web部署 新手请问关于ListView的全选功能实现 用C# 如何在Panel中添加图片 我想用c#三层结构的oa换c#三层结构的全站程序学习。 哈希表存储大量数据会有system.outofmemory.exception 关于C#实现远程摄像头技术 WCF服务端关闭之后,客户端就挂掉了,怎么解决? C#程序如何访问C++的RPC(远程过程调用)接口
DateTime dt = DateTime.Now;你的代码....
DateTime dt2 = DateTime.Now;
TimeSpan ts = dt2 - dt;
double Mill = ts.TotalMilliseconds;
MessageBox.Show(Math.Round(Mill / 1000, 3).ToString()+"毫秒");
if(x)
{
TimeSpan ts = DateTime.Now - dt;
if (ts.Seconds > 2)
{
break;
}
i++;
j++;
...
...
...
}
DateTime d1 = DateTime.Now;
if(x)
{
i++;
j++;
...
...
...
}
DateTime d2 = DateTime.Now;
TimeSpan计算d1,d2时间差
第二,开一个线程,timer计时,到点终止线程
至于后续怎么处理,那就是后面的事情了。
就好像你Copy一堆文件,执行一半的时候终止了,你怎么办?重新Copy还是算了不弄了,一切取决于你自己。
因为终止是你决定的,那么后续怎么办也一样是要你来决定。
...
...
a=b+1;
b=c+1;
c=d+1;
//for循环体只能运行2秒,2秒后就直接到下面 d=e+1;
for(..;..;..)
{...}d=e+1;
...
...怎么写呢...我现在在写计数器!
a+1;
b+1;
//for循环执行2秒后跳出执行c+1;
for(..;..;..){...}
c+1;
...
这个for循环体里面做的事情,对后面会产生什么影响吗
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();
}
}
{
获取当前时间time1;
....
获取当前时间time2;
if((time2-time1)/1000==2)
break;
}
for可以循环获取时间,如果是if或者是其他等待句柄(或者是一个简单的等待消息函数)那怎么或得下面的时间呢...时间差局限性太大
...
if (...)//b
...我现在A的判断条件有一个等待数据的变量,而现在我等待不能过2秒,2秒后不管什么情况我都要执行b判断条件了
外部计时,时间到了强制杀掉线程。
//前戏
System.Threading.Thread thread = System.Threading.Thread.CurrentThread;
System.Timers.Timer timer = new System.Timers.Timer(1000);
timer.Elapsed += (sender, e) =>
{
timer.Stop();
if (thread != null) thread.Abort(null);
};
timer.Start();
try
{
//战斗中
thread = null;
}
catch (ThreadAbortException)
{
Thread.ResetAbort();
}
//后戏