通过其名称中止一个线程

时间:2013-10-10 06:44:19

标签: c# .net multithreading thread-abort

我想知道是否可以使用线程名称中止(脏路)一个线程?这是一些示例代码:

public void blah() {
   int TableID = 4; //set by the using at runtime

   Thread myThread = new Thread(() => beginUser(picture));
   myThread.Name = Convert.ToString(TableID);
   myThread.Start();
}

所以现在我创建了一个线程。在程序的后面,用户可以结束一个线程,我的问题就在哪里。如何通过它的名字结束一个线程?或许是另一种结束它的方式?我不想使用背景工作者。

示例:myThead[4].Abort();

感谢

2 个答案:

答案 0 :(得分:6)

为什么不简单地使用字典将线程名存储到线程映射中,只需从任何地方杀死。

Dictionary<string, Thread> threadDictionary = new Dictionary<string, Thread>();
Thread myThread = new Thread(() => beginUser(picture));
myThread.Name = Convert.ToString(TableID);
myThread.Start();
threadDictionary.Add("threadOne", myThread);

threadDictionary["threadOne"].Abort();

答案 1 :(得分:3)

我不确定你的意思。 你想稍后用另一种方法中止线程吗?在这种情况下,这应该有效:

Thread myThread;    
public void blah() {
   int TableID = 4; //set by the using at runtime

   myThread = new Thread(() => beginUser(picture));
   myThread.Name = Convert.ToString(TableID);
   myThread.Start();
}

public void blub() {
   myThread.Abort();
}