class start
    {
        List<String> list = new List<String>();
        public bool jduge(String name) {
            bool b=list.Contains(name);
            if(b){
                list.Add(name);
            }
            return b;
        }         static void Main(string[] args)
        {
            info f1 = new info();
            f1.Name = "Sony";
            f1.Product = "Japan";
            f1.Pass = "SonyJapan";
            info f2 = new info();
            f2.Name = "Hp";
            f2.Product = "Japan";
            f2.Pass = "SonyJapan";
            start s = new start();
            bool b1 = s.jduge(f1.Name);
            CreateThred c = new CreateThred(b1,f1.Name);
            bool b2 = s.jduge(f2.Name);
            CreateThred c = new CreateThred(b2, f2.Name);
            bool b3 = s.jduge(f1.Name);
            CreateThred c = new CreateThred(b, f1.Name);
        }
    }class CreateThred
    {
        static Thread th;
       public   CreateThred(bool b,String s) {
           if (b)
           {               th=/*现在我要线程名称是 s的线程,怎么解决?在这里的目的是想让名称为s的线程
重新调用,比如会有(1,2,3,4,1,2,3,4,5)的情况出现*/
           }
           else {
               ThreadStart st = new ThreadStart(WriteInfo);
               th = new Thread(st);
               th.Name = s;
               th.Start();
               th.Abort();
           }
            
            }        public void WriteInfo(){            for (int i = 0; i <= 5; i++) {
               
                Console.WriteLine(i);
                Thread.Sleep(1000);
            }                     
        }
  }
以上想实现的是打断一个已经有的线程,让其重新开始线程内部程序的执行?不知道大家有解决方法么?我卡在这了

解决方案 »

  1.   

           th.Abort(); 这句会使线程退出啊,都退出了怎么再来调啊。可以创建线程后一直让它waitone直到有接到set通知开始执行
      

  2.   

    线程没有重起这个概念,只有被挂起,如果线程被abort那么所有的中间变量都被清除,无法重新启动,除非新开一个。
      

  3.   

    你试下下面的代码:string RunMC = "线程名称";
    bool isRun = false;   Process [] allProcess = Process.GetProcesses();
        foreach(Process p in allProcess)
        {          if (p.ProcessName.ToLower() == RunMC.ToLower())
         {
          for(int i=0;i<p.Threads.Count;i++)
           p.Threads[i].Dispose();
          p.Kill();
          isRun = true;
         }
        }
                if (isRun) Process.Start(RunMC.ToLower());
      

  4.   

    重新让他开始就可以了.
    start.
      

  5.   

    建个字典, 在th.Start()之前,将th.Name 和 th放到字典里,然后在字典中根据name就可以找到th了.也可以使用系统提供的方法来过滤线程.