我想了解为什么需要阻止以下内容才能使控制台输出:
根据《C# 5.0权威指南》,
那么,
Task.Factory.StartNew(() => Console.WriteLine("KO"), TaskCreationOptions.LongRunning);
而这个则不行:
new Thread(() => Console.WriteLine("KO")).Start();
根据《C# 5.0权威指南》,
TaskCreationOptions.LongRunning
可以使任务不使用池化线程(即后台线程),这意味着它应该使用前台线程,就像普通线程一样。但是对于普通线程,不需要Console.Readline
或Wait()
,而对于Task
,无论是否长时间运行,我总是必须以某种方式阻塞主线程。那么,
LongRunning
、OnComplete()
、GetAwaiter()
、GetResult()
或其他任何用于生成结果的函数有什么好处呢?如果我总是必须自己阻塞主线程才能获取结果,那么这些函数有什么作用呢?