假如线程数可以由用户动态的增加或者减少,如果管理这些线程,用线程数组吗还是Hash表?for ( int i = 0; i < 8; i ++ )
{
Thread t = new Thread( new ThreadStart(PrintUserId) );
t.Start();
}
如果我的线程通过上述方式创建,同时PrintUserId是一个非常耗时的过程,那么
1) 如何枚举当前进程中的这些线程?
2) 如果PrintUserId执行到一半我就像结束进程,应该怎么操作?谢谢

解决方案 »

  1.   

    用数组,Hash,ArrayList等都可以,把它做成全局的。
    可以在PrintUserId中添加方法在其结束前从上面的全局列表中移除自己的线程。
    如果PrintUserId不方便改,就再做个方法把PrintUserId放到其中,结束时移除自己。
    当然也可以单独为用户做一个方法来遍历全局列表,如果线程结束就移除。
      

  2.   

    to 1) 如何枚举当前进程中的这些线程?
    2) 如果PrintUserId执行到一半我就像结束进程,应该怎么操作?如果是自己在创建线程的时候,把它保存到集合容器中,那么实现这两点是很容易的。如果创建的时候没有保存,你可以通过process.Threads来实现,不过相应的就不直观了。