メインスレッドが新しいタスクを作成する簡単なコードがいくつかあります。タスクは、複数の子タスクを順番に生成します。 メインスレッドは、親タスクで「待機」します。私は、プログラムの複数回にわたって同じ出力を得られないことに気づいています。下のコードでは、各タスクの反復変数の値を出力していますが、異なる実行間ではサブセットのみが出力されます。私は実行が注文されていないことを理解しますが、私は100の数字が(特定の順序で)印刷されることを期待しているという点でまだ完全でなければならないでしょう。 Waitを呼び出すと、すべての子タスクが完了するのを待つことはありませんか? 私はMSDNパー子タスクを実行して生成するときに一貫性のない結果が発生する
static void Main(string[] args)
{
Console.WriteLine("Main executing on ThreadID:- " + Thread.CurrentThread.ManagedThreadId.ToString());
var task = Task.Factory.StartNew(WriteNumbers);
task.Wait();
}
private static void WriteNumbers()
{
Console.WriteLine("WriteNumbers executing on ThreadID:- " + Thread.CurrentThread.ManagedThreadId.ToString());
for (int i = 0; i < 100; i++)
{
int localInt = i;
Task.Factory.StartNew(() =>
{
Write(localInt);
}, TaskCreationOptions.DetachedFromParent);
}
}
private static void Write(int i)
{
Console.WriteLine("Worker Thread executing on ThreadID:-" + Thread.CurrentThread.ManagedThreadId.ToString() + " Value:" + i.ToString());
}
は、同時実行の問題 – Kareem