Ich möchte Initialisierungen einiger Objekte asynchron ausführen, aber einige Objekte hängen davon ab, dass andere initialisiert werden. Und dann müssen alle Objekte initialisiert werden, bevor der Rest meiner Anwendung fortfährt.Können Sie Wait() für eine Aufgabe mehrmals aufrufen?
Ist es möglich, Wait() für eine Aufgabe aufzurufen und später Wait() erneut aufzurufen, oder wie in meinem Beispiel WaitAll() für eine Sammlung, in der es enthalten ist?
Dictionary<String, Task> taskdict = new Dictionary<String, Task>();
taskdict.Add("Task1",
Task.Factory.StartNew(() => {
//Do stuff
}));
taskdict.Add("Task2",
Task.Factory.StartNew(() => {
taskdict[ "Task1" ].Wait();
//Do stuff
}));
try {
Task.WaitAll(taskdict.Values.Convert<Task[ ]>());
}
Oder wird das zweite Wait()/WaitAll() fehlschlagen?
Danke für eine klare Antwort. Und für Details zur Ausnahmebehandlung. Das ist ein wichtiges Thema, das ich berücksichtigen muss. –
@Servy was ist, wenn ich möchte, dass die Aufgabe erneut ausgeführt wird, bei zweiter Wartezeit. Wie kann ich das Task-Ergebnis ungültig machen? –
@ MerdanGochmuradov Sie können nicht. So funktionieren Aufgaben nicht. – Servy