...Process()//这里面是容易出现超时的代码//希望超时以后绕过以上代码,从此处开始执行....
请教应该怎么写或使用什么机制,谢谢!

解决方案 »

  1.   

    do
    {
        break;
    }while() 
      

  2.   

    异步好像是主程序可以绕过,但Process里面的内容没有停止运行
      

  3.   

    这个超时并非是异常,无法catch
      

  4.   

    用定时器
    在定时器里处理时
    TimeSpan timespan=DateTime.Now-开始时记录的时间;if(timespan.ToTotalSeconds<=时间)
    {
      //按未超时处理
    }
    else
    {
      //按超时处理
    }
      

  5.   

    跟我起初的想法差不多。可是后来转念一想,怎么样知道什么时候开启这个计时器呢?即便是开启了这个计时器又怎么样让超时的那一行代码停止不执行呢?除非抛出一个Exception,但是这个代价是不是太大了?我想 qiufengilove 兄弟的意思应该是这样来
    try
    {
        System.Timers.Timer timer = new System.Timers.Timer(10000);
        timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
        timer.Start();
        //需要执行的代码,这部分代码若超时则跳过
    }
    finnal
    {
        //这里是跳过之后的代码
    }void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        throw new TimeoutException();
    }我觉得这样虽然可以实现,但是抛出异常效率很低的,如果对性能要求不高可以按照 qiufengilove 兄弟的这个方法试下。