假设我启动了两个这样的线程:
// Start first thread
Thread loaderThread1 = new Thread(loader.Load);
loaderThread1.Name = "Rope";
loaderThread1.Start();
// Start second thread
Thread loaderThread2 = new Thread(loader.Load);
loaderThread2.Name = "String";
loaderThread2.Start();
有没有办法可以使用Name属性枚举线程?
我希望能够检查具有特定名称的线程是否仍在运行。
我创建的每个线程都使用一组命名数据,数据集的名称用作处理数据的线程的名称。在启动工作线程之前,我想查看同一组数据的任何先前线程是否已经在运行。
使用System.Diagnostics.GetCurrentProcess().Threads
时获得的主题是ProcessThread
类型,而不是Thread
!
答案 0 :(得分:4)
我怀疑你可能必须将线程放到Dictionary<string,Thread>
才能使用 - 但是你为什么还要这样做呢?线程之间通常有其他通信方式(任何锁定/等待对象)。
要在流程级别工作(即不考虑Thread
对象),请参阅here - 您可以将其限制为当前流程,但您将无法与线程。
答案 1 :(得分:0)
另请注意,线程名称不必是唯一的。似乎使用线程ID可能是更好的选择...
答案 2 :(得分:-1)
所以,在我对进程线程的错误之后,这里有一种方法来保存你的线程。没什么了不起的,但我认为编码示例随时都非常方便。
List<Thread> threads = new List<Thread>();
for (int i = 0; i < 10; i++)
{
Thread t = new Thread(delegate()
{
do
{
Thread.Sleep(50);
} while (true);
});
t.IsBackground = true;
t.Name = i.ToString();
t.Start();
threads.Add(t);
}
foreach (Thread t in threads)
{
Console.WriteLine(t.Name);
}
答案 3 :(得分:-2)
我想你想要以下
System.Diagnostics.Process.GetCurrentProcess()。线程