PLINQ is a very handy tool for developers, to improve the performance of applications by executing a set of tasks in parallel. Creating a number of tasks can improve performance, but, if tasks are blocking in nature, then the application will end up creating lots of blocking threads and, at some point, will become unresponsive. This is especially true if the task is executing some I/O operations. Here is a method that needs to download 100 pages from the web as quickly as possible:
public async static void Main()
{
var urls = Enumerable.Repeat("http://www.dummyurl.com", 100);
foreach (var url in urls)
{
HttpClient client = new HttpClient();
HttpResponseMessage response = await
client.GetAsync("http://www.aspnet.com");
string content = await...