日期:2014-05-17  浏览次数:20861 次

线程在sleep情况下如何让程序能继续运行
附上程序的简写版

public void StartThread()   //主程序调用分方法
        {
                while (true)
                {
                    Thread myThread = new Thread(new ThreadStart(Execute));   //Execute为线程方法
                    Thread.Sleep(120000);   //它就停在这里了
                }
        }

我在程序里调用StartThread的时候,程序就卡在那里了。我知道原因,但是要怎么才能正确使用我就不知道了,如何调用这个StartThread并能让程序继续运行呢?
thread 线程

------解决方案--------------------
while (true)不就死循环了么
------解决方案--------------------
时间到了他就可以继续了。
------解决方案--------------------
引用:
Quote: 引用:

时间到了他就可以继续了。

可不可以让该线程运行着,但是程序正常运行呢?


你sleep了线程也还是运行着..
只是线程的状态是阻塞状态。

你sleep的根本目的是啥?
------解决方案--------------------
思路没错
但你为什么要开另一个线程?
------解决方案--------------------
看看system.thread.timer
------解决方案--------------------
引用:
Quote: 引用:

思路没错
但你为什么要开另一个线程?

如果我不开线程,我要如何实现它的“自动”,让它一直开着,去比较时间,除了开线程,我也想不出好的办法了。。。你说“另一个”,难道同一个也能实现吗?鄙人愚钝,望大侠不吝赐教



你如果重点是时间,那你应该设置一个时间的callback,当时间符合时调用callback函数。
但是你要注意,有可能第一次备份还没完,第二次备份又开始了,这就涉及到线程同步了。
如果单线程的话,是顺序执行的,下一次计时是从这次备份完成后才开始。
而你的while循环要保证的是程序什么时候退出。

所以要看你的需求。