MSDN ドキュメント TaskFactory.StartNew に従って、タスクを作成して開始します。したがって、以下のコードサンプルでは
class Program
{
public static void Main()
{
var t =Task.Factory.StartNew(
() => SomeLongRunningCalculation(10, Display)
);
var t1 = Task.Factory.StartNew(
() => SomeLongRunningCalculation(20, Display)
);
Console.WriteLine("Invoked tasks");
Task.WaitAll(t, t1);
Console.ReadLine();
}
public static void Display(int value)
{
Console.WriteLine(value);
}
public static void SomeLongRunningCalculation(int j, Action<int> callBack)
{
Console.WriteLine("Invoking calculation for {0}", j);
System.Threading.Thread.Sleep(1000);
if (callBack != null)
{
callBack(j + 1);
}
}
}
私の期待される出力は
Invoking calculation for 10 Invoking calculation for 20 Invoked tasks 11 21
しかし、それは表示されています
Invoked tasks Invoking calculation for 20 Invoking calculation for 10 21 11
私は学びたいです
- StartNew の直後にタスクが実行されないのはなぜですか?
- 期待される形式で出力を取得するにはどうすればよいですか?