In the first video of the series, I acknowledged that Tasks, rather than Threads, are usually the preferred tool for most C# parallel and asynchronous programming jobs. So what's the difference? And how do you choose? In this video, I'm going to take a look at one of the key differences between Tasks and Threads. This has to do with how I/O bound work is actually scheduled on the processor and how Tasks give you some automatic load balancing. In addition, we'll take a quick look at the C# Parallel For construct to see how it relates to the world of Tasks based programming.