例如:if(x)
{
  i++;
  j++;
  ...
  ...
  ...
}我需要让这个循环体执行时间不能超过1秒~ 怎么写判断呢?  超过2秒中就直接跳出这个执行体(也就是说这个if语句最多让他执行2秒)...求解!大神们

解决方案 »

  1.   

    //时间计算
    DateTime dt = DateTime.Now;你的代码....
     
    DateTime dt2 = DateTime.Now;
                
    TimeSpan ts = dt2 - dt;
               
    double Mill = ts.TotalMilliseconds;
              
    MessageBox.Show(Math.Round(Mill / 1000, 3).ToString()+"毫秒");
      

  2.   

        DateTime dt = DateTime.Now;
       if(x)
       {
         TimeSpan ts = DateTime.Now - dt;
         if (ts.Seconds > 2)
         {
           break;
         }
         i++;
         j++;
         ...
         ...
         ...
    }   
     
      

  3.   

    计算机一秒钟能执行百万条指令,你的if语句大可放心,肯定能在1秒内执行完毕除非是死循环了硬要实现它也可以。设置一个变量flag=false一个计时器 当计时器到达两秒是flag=trueif语句根据flag来执行,flag为真则停止。但没这必要!
      

  4.   


    DateTime d1 = DateTime.Now;
    if(x)
    {
      i++;
      j++;
      ...
      ...
      ...
    }
    DateTime d2 = DateTime.Now;
    TimeSpan计算d1,d2时间差
      

  5.   

    第一,if中每个环节计算一次时间差,如果超过1秒,return
    第二,开一个线程,timer计时,到点终止线程
      

  6.   

    再大的操作都一样,只要需求说要终止那就要终止。
    至于后续怎么处理,那就是后面的事情了。
    就好像你Copy一堆文件,执行一半的时候终止了,你怎么办?重新Copy还是算了不弄了,一切取决于你自己。
    因为终止是你决定的,那么后续怎么办也一样是要你来决定。
      

  7.   

    这样把:
    ...
    ...
    a=b+1;
    b=c+1;
    c=d+1;
    //for循环体只能运行2秒,2秒后就直接到下面 d=e+1;
    for(..;..;..)
    {...}d=e+1;
    ...
    ...怎么写呢...我现在在写计数器!
      

  8.   


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

  9.   


    这个for循环体里面做的事情,对后面会产生什么影响吗
      

  10.   

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

  11.   

    for(;;)
    {
       获取当前时间time1;
       ....
       获取当前时间time2;
       if((time2-time1)/1000==2)
           break;
    }
      
      

  12.   


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

  13.   

    if (...)//a
        ...                    
    if (...)//b
       ...我现在A的判断条件有一个等待数据的变量,而现在我等待不能过2秒,2秒后不管什么情况我都要执行b判断条件了
      

  14.   

    2个函数可以用System.Timers.Timer 实现...但同一函数体里 我很尴尬了...
      

  15.   

    都是穿卅小裤衩的人了,还吵了没完。不过还是支持wddw1986:开一个线程,把处理方法放到线程里。
    外部计时,时间到了强制杀掉线程。
      

  16.   

    如果不想打乱程序流程
    //前戏
                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();
                }
                //后戏