Es scheint, dass Sie mehrere Aufgaben, die von mehreren Threads ausführen möchten. Async-Await soll einen Thread andere Dinge tun lassen, während er warten muss, bis etwas fertig ist.
Etwas, das mir half zu verstehen, warum und wann Sie async-erwarten sollten, war this interview with Eric Lippert Suchen Sie irgendwo in der Mitte für Async erwarten.
Eine andere Sache, die mich verstehen Asynchron-await half war this article by the ever so helpful Stephen Cleary
Wenn die Fäden Sie nicht haben, etwas Nützliches zu tun, während sie auf etwas warten starten gehen, können Sie sie starten nutzen könnten:
static class Program
{
static void Main(string[] args)
{
List<Task> runningTasks = new List<Task>();
IEnumerable<Action> thingsToDo = GetThingsToDo()
foreach (Action thingToDo in thingsToDo)
{
Task startedTask = Task.Run(() => thingToDo);
runningTasks.Add(startedTask);
}
// now that all tasks are started do something else
// after a while wait until all tasks finished
Task.WaitAll(runningTasks.ToArray());
}
}
Nur wenn ein Thread, der eine Ihrer Aktionen ausführt, etwas Sinnvolles tun kann, während Sie auf etwas in der Aktion warten, sollten Sie Ihre Aktionen als async und Task.Run (async() => erwarten. ..)
Aber auch dann muss Ihr Haupt-Thread nicht in einer erwarteten Funktion sein. Nach dem Start aller anderen Threads ist es immer noch frei, zu tun, was immer es tun möchte.
Wenn die '' 'Tasks '' async '' sind, sollten Sie nicht so viele Threads benötigen, um sie parallel laufen zu lassen. Es würde helfen, wenn Sie erklären würden, was Sie eigentlich tun möchten, und zeigen Sie uns auch Ihren Code (funktioniert oder nicht). – svick
eigentlich muss ich parallele Operationen Leistung von Aufgaben zu analysieren, die ich – hemantsharma