Così recentemente mi è stato detto che il modo in cui stavo usando il mio .ContinueWith for Tasks non era il modo corretto di usarli. Devo ancora trovare prove di ciò su Internet, quindi vi chiederò e vedremo qual è la risposta. Ecco un esempio di come utilizzo .ContinueWith:
public Task DoSomething()
{
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Step 1");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 2");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 3");
});
}
Ora so che questo è un semplice esempio e verrà eseguito molto velocemente, ma supponiamo che ogni attività esegua un'operazione più lunga. Quindi, quello che mi è stato detto è che in .ContinueWith, devi dire prevTask.Wait (); altrimenti potresti lavorare prima del termine dell'attività precedente. È anche possibile? Ho pensato che la mia seconda e terza attività sarebbero state eseguite solo al termine dell'attività precedente.
Quello che mi è stato detto come scrivere il codice:
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");
});
}