【C#】-如何通过线程ID找到线程并杀掉

前言

最近一直在帮着正在实习的师哥调错,类似于迅雷一样的一个工程,有上传还有下载,其中都是用线程来做的。里面有好多的代码都是看不懂的。现在有这样一个需求,通过线程ID,找到该线程,并杀掉。遇到这个问题,我想应该还可以,于是上网找答案,找了好久发现并没有我想要的答案,然后我换了另一种思路,解决了这个问题。首先我们先来了解一下线程的基本属性吧!

基础属性

  • Thread.ManagedThreadId        获取线程的ID
  • Thread.Start()        开启线程
  • Thread.Suspend()        挂起线程
  • Thread.Resume()        恢复挂起的线程
  • Thread.Abort()        杀掉线程
  • Thread.ThreadState() 线程运行的状态 Running 表示正在运行 Suspended表示已挂起

基本上这些是我们常用的一些属性和方法。

通过ID找到线程并杀掉

首先我先定义了一个字典,用来放线程的ID和线程

		private static Dictionary<int, Thread> ThreadArray = new Dictionary<int, Thread>();

然后我们在开始一个线程的同时把线程ID和线程存到字典里,把线程ID存到数据库里

            Thread ThreadUpload = new Thread(new ParameterizedThreadStart(Open));
            ThreadtestID = ThreadUpload.ManagedThreadId;
            ThreadArray.Add(ThreadtestID, ThreadUpload);

最后我们在想通过一个线程ID,挂起该线程或者摧毁该线程,就可以从数据库中拿到ID,去字典中把线程找出来。

             string threadid = data.Tables[0].Rows[0][0].ToString();     //通过数据库获取线程ID
             ThreadArray[Convert.ToInt32(threadid)].Suspend();   //挂起线程

总结

通过大兵师傅给的这次机会,很荣幸可以接触到别人设计的软件,再去和自己做的机房作比较,也看到了自己很多地方是欠缺的。自己的能力不够也没帮上什么忙,但是收获真的很大。宝剑锋从磨砺出,梅花香自苦寒来。还是需要慢慢的磨练!

猜你喜欢

转载自blog.csdn.net/ywq1016243402/article/details/86669574