Ich erstelle derzeit eine Engine, die 10 neue Threads erstellen wird, die unterschiedliche Arbeit leisten. Aber ich habe festgestellt, dass meine Lösungsdosis nicht parallel läuft.Parallele Verwendung von Aufgaben
public async Task Start(Func<string, Task> action)
{
for (var i = 1; i <= config.threads; i++)
{
consumers.Add(getActionTask(action));
}
await Task.WhenAll(consumers);
}
private Task getActionTask(Func<string, Task> action)
{
return Task.Run(async() =>
{
// Do something that returns a string
String data = "Some string here";
await action(data);
}
}
Nimmt sich i 2 Fäden laufen, und auf Basis von Daten wird der erste Thread einen Task.Delay(TimeSpan.FromSeconds(30));
den zweiten Thread tun „hallo“ auf einer Schleife drucken.
Es wird nie die Druckschleife erhalten, bevor die Verzögerung vorbei ist, was ist falsch an meiner Implementierung?
Können Sie den Code mit den Delay- und Print-Anweisungen posten? By the way, wickle die 'await action (data)' nicht in einen Aufruf von Task.Run, nicht notwendig. Die Methode 'getActionTask' sollte nur' action (data); ' –