官方说法更推荐使用第一种。
场景:短时间内大量数据需要处理,比如每秒有1000条数据传入,每条数据的处理时间是10MS,这种情况下:
1:将传入的数据不断放入BlockingCollection,然后使用Task.Factory.StartNew来处理这个队列,也就是所有数据使用一个线程处理。
2:直接使用ThreadPool.QueueUserWorkItem来处理每条数据
似乎第二种方法的处理速度更快,但是因为使用的是多个线程,有时候执行的顺序并不是传入的顺序。
.nET 4.5之后建议使用Task,效率比较高
至于异步都是不安传入顺序执行的。Task也不安顺序
异步编程:.NET 4.5 基于任务的异步编程模型(TAP)