So wurde mir kürzlich gesagt, dass die Verwendung von .ContinueWith for Tasks nicht der richtige Weg ist, sie zu verwenden. Ich habe noch keine Beweise dafür im Internet gefunden, also werde ich euch fragen und sehen, wie die Antwort lautet. Hier ist ein Beispiel für die Verwendung von .ContinueWith:
public Task DoSomething()
{
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Step 1");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 2");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 3");
});
}
Jetzt weiß ich, dass dies ein einfaches Beispiel ist und sehr schnell ausgeführt wird, aber nehmen Sie einfach an, dass jede Aufgabe einen längeren Vorgang ausführt. Mir wurde also gesagt, dass Sie in .ContinueWith prevTask.Wait () sagen müssen; Andernfalls können Sie arbeiten, bevor die vorherige Aufgabe abgeschlossen ist. Ist das überhaupt möglich? Ich ging davon aus, dass meine zweite und dritte Aufgabe erst ausgeführt wird, wenn die vorherige Aufgabe abgeschlossen ist.
Was mir gesagt wurde, wie man den Code schreibt:
public Task DoSomething()
{
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Step 1");
})
.ContinueWith((prevTask) =>
{
prevTask.Wait();
Console.WriteLine("Step 2");
})
.ContinueWith((prevTask) =>
{
prevTask.Wait();
Console.WriteLine("Step 3");
});
}