我动态的创建了几个现成,每个线程对应一个属性,当这个属性为false的时候,挂起线程,当属性为true是重新运行线程.我更改了属性的时候,却没办法更改线程运行状态.
代码如下:
  foreach(string k in _htRuntime.Keys)
{
      if(_htRuntime[k].ToString()=="true")//判断属性是否为true;
        {
if(_htThread.ContainsKey(k))
  {
     Thread t = (Thread)_htThread[k];
     if(t.ThreadState == ThreadState.Suspended)//这里判断线程当前状态
     {
t.Resume();//恢复线程运行
     }
 }
}
     else   //属性为false;
{
if(_htThread.ContainsKey(k))
  {
      Thread t = (Thread)_htThread[k];
      if(t.ThreadState == ThreadState.Suspended)//判断现成状态
        {
continue;
}
     else
{
t.Suspend();//挂起线程
}
}
        }
}为什么我上边的代码无法的到正确的运行结果??

解决方案 »

  1.   

    if(_htRuntime[k].ToString()=="true")//判断属性是否为true;
    改成:
    if((bool)_htRuntime[k]=true)//判断属性是否为true;
      

  2.   

    if(_htRuntime[k].ToString()=="true")//判断属性是否为true;
    改成:
    if((bool)_htRuntime[k]==true)//判断属性是否为true;
      

  3.   

    if(_htRuntime[k].ToString()=="true")//判断属性是否为true;
    改成:
    if((bool)_htRuntime[k]==true)//判断属性是否为true;
    楼上的老大.不是这个问题.这个能够正确判断的.我测试了的.
      

  4.   

    检查下_htThread.ContainsKey(k)的值,是否正确???
      

  5.   

    if(_htRuntime[k].ToString()=="true")//判断属性是否为true; ***********
            {
    if(_htThread.ContainsKey(k))
      {
         Thread t = (Thread)_htThread[k];
         if(t.ThreadState == ThreadState.Suspended)//这里判断线程当前状态**********
         {
    t.Resume();//恢复线程运行
         }
     }
    }
    ***********的地方,你为什么两次判断线程是否挂起状态呀?
      

  6.   

    TO:cdo(VC?我才刚学)我第一次是判断这个线程是否应该运行.如果为true,就表示应该运行.在判断是否挂气.如果挂气,就恢复运行.