Asparallel.forall mit asynchronisiertem Code wartet nicht auf Fertigstellung [Duplikat]
Posted: 22 May 2025, 11:11
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.
führt zu einer Ausgabe von:
Die ForAll -Zeile blockiert nicht, und Sie können das in der Ausgabe sehen:
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();
}
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();
}