附上程序的简写版public void StartThread()   //主程序调用分方法
        {
                while (true)
                {
                    Thread myThread = new Thread(new ThreadStart(Execute));   //Execute为线程方法
                    Thread.Sleep(120000);   //它就停在这里了
                }
        }我在程序里调用StartThread的时候,程序就卡在那里了。我知道原因,但是要怎么才能正确使用我就不知道了,如何调用这个StartThread并能让程序继续运行呢?thread线程

解决方案 »

  1.   

    while (true)不就死循环了么
      

  2.   

    这里的话我在其他地方可以让它退出循环,因为我是简写去掉很多东西了,加上如果去掉while,然后在怎么实现线程被调用,然后程序能正常运行呢?
      

  3.   

    可不可以让该线程运行着,但是程序正常运行呢?你sleep了线程也还是运行着..
    只是线程的状态是阻塞状态。你sleep的根本目的是啥?
      

  4.   

    可不可以让该线程运行着,但是程序正常运行呢?你sleep了线程也还是运行着..
    只是线程的状态是阻塞状态。你sleep的根本目的是啥?
    其实是在做实现数据库自动备份,每隔两分钟,去比较下时间,然后决定要不要备份,我把这个自动备份在主程序中实现的。是不是我的思路弄错了。
      

  5.   

    如果我不开线程,我要如何实现它的“自动”,让它一直开着,去比较时间,除了开线程,我也想不出好的办法了你说“另一个”,难道同一个也能实现吗?鄙人愚钝,望大侠不吝赐教
    你如果重点是时间,那你应该设置一个时间的callback,当时间符合时调用callback函数。
    但是你要注意,有可能第一次备份还没完,第二次备份又开始了,这就涉及到线程同步了。
    如果单线程的话,是顺序执行的,下一次计时是从这次备份完成后才开始。
    而你的while循环要保证的是程序什么时候退出。所以要看你的需求。
      

  6.   

    这种情况用Timer 是最合适不过了.
      

  7.   

    谢谢各位,我已经找到原因了,我是线程sleep错了,包组线程给停止了,结贴把