Asparallel.forall mit asynchronisiertem Code wartet nicht auf Fertigstellung [Duplikat]C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Asparallel.forall mit asynchronisiertem Code wartet nicht auf Fertigstellung [Duplikat]

Post by Anonymous »

Ich habe einen Code, der Asparallel (). Forall (...) verwendet, von dem ich glaubte, dass er blockieren würde, während alle Ausführungen abgeschlossen sind. Dies funktioniert perfekt mit dem nicht asynchronen Code.

Code: Select all

static void Main(string[] args)
{
var arr = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };

void printNumber(int numb)
{
Thread.Sleep(1000);
Console.WriteLine("Number: " + numb);
}

arr.AsParallel().ForAll(p =>
{
printNumber(p);
});

Console.WriteLine("Done!");
Console.ReadLine();
}
führt zu einer Ausgabe von:

Code: Select all

static void Main(string[] args)
{
var arr = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };

async Task printNumber(int numb)
{
await Task.Delay(1000);
Console.WriteLine("Number: " + numb);
}

arr.AsParallel().ForAll(async p =>
{
await printNumber(p);
});

Console.WriteLine("Done!");
Console.ReadLine();
}
Die ForAll -Zeile blockiert nicht, und Sie können das in der Ausgabe sehen:

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post