Thread đại diện cho một thread cấp hệ điều hành thực tế, với stack và tài nguyên hạt nhân (kernel) của riêng nó. Thread cho phép mức độ kiểm soát cao nhất; bạn có thể Abort() hoặc Suspend() hoặc Resume() một thread, bạn có thể quan sát trạng thái (state) của nó và bạn có thể đặt các thuộc tính cấp thread như stack size, state hoặc culture. ThreadPool là một trình bao bọc xung quanh một nhóm các thread được duy trì bởi CLR.
Lớp Task từ Task Parallel Library cung cấp những gì tốt nhất của cả hai thế giới. Giống như ThreadPool, một task không tạo thread hệ điều hành của riêng nó. Thay vào đó, các task được thực thi bởi TaskScheduler; bộ lập lịch mặc định chỉ chạy trên ThreadPool. Không giống như ThreadPool, Task cũng cho phép bạn biết được khi nào nó hoàn thành và (thông qua generic Task) để trả về kết quả.