C# 获取多线程中线程的状态

C# 获取多线程中线程的状态,c#,multithreading,C#,Multithreading,我已经动态创建了线程 static void Main(string[] args) { int ThreadCount =Convert.ToInt32ConfigurationManager.AppSettings["Threads"]); List<Thread> th = new List<Thread>(); for (int i = 0; i < ThreadCount; i++) { Thread t =

我已经动态创建了线程

static void Main(string[] args)
{

    int ThreadCount =Convert.ToInt32ConfigurationManager.AppSettings["Threads"]);
    List<Thread> th = new List<Thread>();
    for (int i = 0; i < ThreadCount; i++)
    {
      Thread t = new Thread(print);
      th.Add(t);
    }
    foreach (Thread t in th)
    {
       t.Start();
    }
 }
 public static void print()
 {
    console.writeline("123");
 }
static void Main(字符串[]args)
{
int ThreadCount=Convert.ToInt32ConfigurationManager.AppSettings[“Threads”];
List th=新列表();
对于(int i=0;i
我想知道这个线程何时完成。 完成这些线程后,我想打印一条消息“完成”

我如何才能做到这一点。

Thread.Join()可能会有所帮助;看

您可能希望了解更高级别的TPL(任务并行库)API;看见从长远来看,它可能更容易使用

var tasks[] = new Task[n];
for (int i = 0; i < n; ++i)
{
   tasks[i] = new Task(() => Console.WriteLine(123));
   tasks[i].Start();
}

Tasks.WaitAll(tasks);
Console.WriteLine("DONE");

我认为在答案的第一部分,你应该把foreach(var t in th)t.Join()放进去;相反
var tasks[] = new Task[n];
for (int i = 0; i < n; ++i)
{
   tasks[i] = new Task(() => Console.WriteLine(123));
   tasks[i].Start();
}

Tasks.WaitAll(tasks);
Console.WriteLine("DONE");
Parallel.ForEach(Enumerable.Range(1, n), i => Console.WriteLine(i));
Console.WriteLine("DONE");