-2

スレッドを動的に作成しました。

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");
 }

このスレッドがいつ完了するか知りたいです。これらのスレッドの完了時に、「DONE」のメッセージを出力したい

これどうやってするの。

4

1 に答える 1

5

Thread.Join() が役立ちます。http://msdn.microsoft.com/en-us/library/95hbf2ta.aspxを参照してください。

foreach (var t in th)
   t.Join();

Console.WriteLine("DONE");

高レベルの TPL (Task Parallel Library) API を参照してください。http://msdn.microsoft.com/en-us/library/dd537609.aspxを参照してください。長期的には使いやすいかもしれません。

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");

または PLINQ 、http://msdn.microsoft.com/en-us/library/dd460688.aspx、(コードをコンパイルしていません)

Parallel.ForEach(Enumerable.Range(1, n), i => Console.WriteLine(i));
Console.WriteLine("DONE");
于 2012-10-29T14:42:13.000 に答える