Since you are not starting any asynchronous operation in Way 1 above, you are wasting time consuming another thread from threadpool (possibly if you do not change the default value of TaskScheduler ).
However, on path 2, you create a completed task, and you do it in the same thread as you. TCS can also be thought of as a threadless task (perhaps a misnomer, but used by several developers).
source share