如何让一个线程一直运行?
protected void button(objecet sender,EvenArgs e)// 主线程  
{  
     Thread newThread = new Thread(new ThreadStart(IndexThread));  
     newThread.Start();  
}  
private void IndexThread()  
{  
     插入方法();  
     Thread.Sleep(2000);// 间隔两秒  
     修改方法();  
}  
private void 插入方法()  
private void 修改方法()  
如上面的方式,我是不是应该把IndexThread() 修改成  
private void IndexThread()  
{  
   while(flag)
   {
     插入方法();  
     Thread.Sleep(2000);// 间隔两秒  
     修改方法();  
   }
}  
而flag 我在别的线程控制他的值。
这样的线程是不是就会按照需要一直运行,不需要的时候结束掉?
------解决方案--------------------private void IndexThread()
{
 while(flag)
 {
   插入方法();
   Thread.Sleep(2000);// 间隔两秒
   修改方法();
 }
}  
这个方法什么时候运行完线程就什么时候结束
------解决方案--------------------你这样写的确会让线程一直运行到你不想让它运行为止
但是,有一点,你使用的是While循环,那么这样写,必将导致你的程序占用CPU100%,不信可以去试试看。
如果你不想CPU一直负载,也不想让线程运行一次就结束,那么你可以使用阻塞。
system.threading 命名空间中有 AutoResetEvent 类。waitone可以让线程挂起等待信号,信号来了,继续往下走。set给出信号,让你wait的线程继续执行。
public AutoResetEvent are = new AutoResetEvent(false);
while(true)
{
are.waitone();
if( shutdown )
{
break;
}
//你的程序处理过程
}
写另外一个方法,方法中调用are.set(),调用一次set,你的线程就会运行一次,如果要退出,将shudown这个bool型设置为true。