Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharpNotesForProfessionals.pdf
Скачиваний:
57
Добавлен:
20.05.2023
Размер:
6.12 Mб
Скачать

Chapter 117: Task Parallel Library

Section 117.1: Parallel.ForEach

An example that uses Parallel.ForEach loop to ping a given array of website urls.

static void Main()

{

string [] urls =

{

"www.stackoverflow.com", "www.google.net", "www.facebook.com", "www.twitter.com"

};

System.Threading.Tasks.Parallel.ForEach(urls, url =>

{

var ping = new System.Net.NetworkInformation.Ping();

var result = ping.Send(url);

if (result.Status == System.Net.NetworkInformation.IPStatus.Success)

{

Console.WriteLine(string.Format("{0} is online", url));

}

});

}

Section 117.2: Parallel.For

An example that uses Parallel.For loop to ping a given array of website urls.

static void Main()

{

string [] urls =

{

"www.stackoverflow.com", "www.google.net", "www.facebook.com", "www.twitter.com"

};

System.Threading.Tasks.Parallel.For(0, urls.Length, i =>

{

var ping = new System.Net.NetworkInformation.Ping();

var result = ping.Send(urls[i]);

if (result.Status == System.Net.NetworkInformation.IPStatus.Success)

{

Console.WriteLine(string.Format("{0} is online", urls[i]));

}

});

}

GoalKicker.com – C# Notes for Professionals

596

Section 117.3: Parallel.Invoke

Invoking methods or actions in parallel (Parallel region)

static void Main()

{

string [] urls =

{

"www.stackoverflow.com", "www.google.net", "www.facebook.com", "www.twitter.com"

};

System.Threading.Tasks.Parallel.Invoke( () => PingUrl(urls[0]),

() => PingUrl(urls[1]), () => PingUrl(urls[2]), () => PingUrl(urls[3])

);

}

void PingUrl(string url)

{

var ping = new System.Net.NetworkInformation.Ping();

var result = ping.Send(url);

if (result.Status == System.Net.NetworkInformation.IPStatus.Success)

{

Console.WriteLine(string.Format("{0} is online", url));

}

}

GoalKicker.com – C# Notes for Professionals

597