根据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 之后任务没有立即运行?
- 我应该怎么做才能获得预期格式的输出?