Mostrar a sintaxe correta de loops e execução de métodos, em paralelismo, nas linguagens C# e VB.NET.
Consideramos que para os exemplos a seguir, seja usado o import/using do namespace System.Threading.Tasks.
Nota: se você não sabe o que é paralelismo, não deixe de visitar os outros artigos:
FOR - C#
//Loop for tradicional
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i.ToString());
}
//Loop for paralelo
Parallel.For(0, 10, i =>
{
Console.WriteLine(i.ToString());
});
FOR - VB.NET
'Loop for tradicional
For i As Integer = 0 To 10 - 1
Console.WriteLine(i.ToString())
Next
'Loop for paralelo
Parallel.For(0, 10, Sub(i)
Console.WriteLine(i.ToString())
End Sub)
LISTA DE NÚMEROS
Para os códigos abaixo, consideramos a criação de uma lista de números inteiros, conforme código abaixo:
C#List<int> numbers = new List<int>();
numbers.Add(100);
numbers.Add(200);
numbers.Add(300);
numbers.Add(400);
numbers.Add(500);
VB.NET
Dim numbers As New List(Of Integer)
numbers.Add(100)
numbers.Add(200)
numbers.Add(300)
numbers.Add(400)
numbers.Add(500)
FOR EACH - C#
//Foreach tradicional
foreach (int n in numbers)
{
Console.WriteLine(n.ToString());
}
//Foreach Paralelo
Parallel.ForEach(numbers, n =>
{
Console.WriteLine(n.ToString());
});
FOR EACH - VB.NET
'Foreach tradicional
For Each n As Integer In numbers
Console.WriteLine(n.ToString())
Next
'Foreach Paralelo
Parallel.ForEach(numbers, Sub(n)
Console.WriteLine(n.ToString())
End Sub)
LOOP EM LISTA - C#
//Loop em lista
numbers.ForEach(n => Console.WriteLine(n.ToString()));
//Loop paralelo em lista
numbers.AsParallel().ForAll(n => Console.WriteLine(n.ToString()));
LOOP EM LISTA - VB.NET
'Loop em lista
numbers.ForEach(Sub(n)
Console.WriteLine(n.ToString())
End Sub)
'Loop paralelo em lista
numbers.AsParallel().ForAll(Sub(n)
Console.WriteLine(n.ToString())
End Sub)
EXECUÇÃO DE MÉTODOS
Para os códigos a seguir, considere a criação do seguinte método:
C#
private static void WriteNumber(int number)
{
Console.WriteLine(number.ToString());
}
VB.NET
Private Sub WriteNumber(number As Integer)
Console.WriteLine(number.ToString())
End Sub
MÉTODOS - C#
//Método tradicional
WriteNumber(888);
//Método paralelo
Parallel.Invoke(() => WriteNumber(999));
MÉTODOS - VB.NET
'Método tradicional
WriteNumber(888)
'Método paralelo
Parallel.Invoke(Sub()
WriteNumber(999)
End Sub)
Conclusão
Apesar de existir algumas diferenças de sintaxe entre as linguagens VB.NET e C#, as duas linguagens possuem suporte para o paralelismo, a partir do framework 4.0.