本帖最后由 abc221414 于 2011-08-22 10:50:23 编辑

解决方案 »

  1.   

    处理放在Thread里。在主线程里thread.Join(等待时间) (单位:ms) 比如:var thread = new Thread(DoSomeWork); // DoSomeWork里放你的处理
    thread.Start();
    var success = thread.Join(60000); // 等待1分钟
    // 如果success为false那么就说明超时了
    if(!success) 
      Console.WriteLine("Timeout");
    else
      Console.WriteLine("Finish");  
      

  2.   

    TO fangxinggood:
    谢谢您的帮助,有一点我不太明白。
    如果一个子线程的执行超过了1分钟,那么它是自己在后台自动执行一直到结束,还是在一个合适的时间被系统安全的结束?
    如果这个子线程后台一直执行到结束的话,它会不会一直占用CPU资源呢?谢谢:)
      

  3.   

    线程运行前先取得
    int starttime=System.Environment.TickCount;
    线程循环中执行
    int temp = System.Environment.TickCount;
    int b = temp - starttime;
    超时就用b来判断
    自己结束自己吧TickCount单位是毫秒
      

  4.   

    但是在使用Abort()结束的时候,后台会抛出异常。
    如果不想要抛出异常的话,除了设置该线程为后台线程之外,还有什么好的办法?