请问我建立了一个新类clsThreadFun里面存放了一些函数并且传递一个函数,是运行线程代码:
void ThreadRun(int i)
{
  clsThreadFun Search=new clsThreadFun(i);
  Thread test=new Thread(new ThreadStart(Search.SearchMain));
  RefList();
  test.Start();
}我要实现多线程,也就是说要多次运行这个函数,用i分辨是哪个,可是我如何通过i来结束指定的线程???再现等

解决方案 »

  1.   

    SearchCollection _SearchCollection=new SearchCollection();
    void ThreadRun(int i)
    {
      Search _Search=SearchCollection.Add(i);
    }要停止某个线程:
    void StopThread(int i){
    _SearchCollection[i].Dispose();
    }
    ///////////////////////////////////////////////
    public class Search : IDisposable
    {
    private int _ThreadID;
    Thread _Thread=new Thread(new ThreadStart(this.SearchMain));
    private bool _Disposing=false;
    public Search(int id){
    _ThreadID=id;
    _Thread.start();
    } private void SearchMain(){
    //把SearchMain过程放到这里
    while(!_Disposing){
    //过程
    }
    }
    public void Dispose(){
    _Disposing=true;
    }
    };
    public class SearchCollection : DictionaryBase
    {
     public Search this [int i]{
     get {return (search)Dictionary[i];}
     }
     public ICollection Values {
     get {return Dictionary.Values;}
     }
     public Search Add(int i){
     Search o=new Search(i);
     Dictionary.Add(i,o);
     return o;
     }
    };
      

  2.   

    首先要定义一个clsThreadFun[] Searchs数组
    clsThreadFun[] Searchs=new clsThreadFun[n];
    其次将clsThreadFun对象保存到对应的数组中
    Searchs[n]=new clsThreadFun(n);
    Thread test=new Thread(new ThreadStart(Search[n].SearchMain));
      RefList();
     test.Start();
    再有在clsThreadFun内定义一个bool Quit字段
    结束线程时设置Searchs[n].Quit=false; 线程检测到此值便安全退出