我试图理解TPL。
只是出于好玩,我尝试创建一些带有随机睡眠时间的任务,以查看它们如何被处理。我旨在实现“点火即忘”的模式。
static void Main(string[] args)
{
Console.WriteLine("Demonstrating a successful transaction");
Random d = new Random();
for (int i = 0; i < 10; i++)
{
var sleep = d.Next(100, 2000);
Action<int> succes = (int x) =>
{
Thread.Sleep(x);
Console.WriteLine("sleep={2}, Task={0}, Thread={1}: Begin successful transaction",
Task.CurrentId, Thread.CurrentThread.ManagedThreadId, x);
};
Task t1 = Task.Factory.StartNew(() => succes(sleep));
}
Console.ReadLine();
}
但是我不明白为什么它会忽略Sleep(random)并将所有行输出到控制台。
有人能解释一下吗?