What is the difference between task and thread?

c#, c#-4.0, multithreading, task-parallel-library, terminology

Solution

A task is something you want done.

A thread is one of the many possible workers which performs that task.

In .NET 4.0 terms, a Task represents an asynchronous operation. Thread(s) are used to complete that operation by breaking the work up into chunks and assigning to separate threads.

Problem

In C# 4.0, we have `Task` in the System.Threading.Tasks namespace. What is the true difference between `Thread` and `Task`. I did some sample program(help taken from MSDN) for my own sake of learning with ``` Parallel.Invoke Parallel.For Parallel.ForEach ``` but have many doubts as the idea is not so clear. I have initially searched in Stackoverflow for a similar type of question but may be with this question title I was not able to get the same. If anyone knows about the same type of question being posted here earlier, kindly give the reference of the link.

Original source