Dato che stavo capendo il Task
nel contesto dell'attività annidata, non lo capisco davvero- Perché la terza stampa prima della seconda stampa?Task.ContinueWith() attività principale non attende l'operazione figlio per terminare
Anche se, ho usato Task.WaitAll(t)
, esso stampa terza linea prima secondo linea.
Codice:
public static void Main()
{
Task t = new Task(
() =>
{
Thread.Sleep(2000);
Console.WriteLine("1st print...");
});
t.ContinueWith(
x =>
{
Thread.Sleep(2000);
Console.WriteLine("2nd print...");
},
TaskContinuationOptions.OnlyOnRanToCompletion);
t.Start();
Task.WaitAll(t);
Console.WriteLine("3rd print...");
Console.Read();
}
uscita:
Si producono lo stesso risultato, anche se uso 'TaskContinuationOptions.AttachedToParent' con l'opzione di task figlio. – nunu
@Andrey Certo, abbiamo la domanda duplicata, ma la risposta di questa domanda duplicata si basa sulla creazione di una serie di attività Task [] che è la soluzione che conosco. Ma voglio sapere la risposta senza creare l'array Task []. – nunu
Voglio usare la mia macchina per andare in posti senza gas, ma non si muoverà! – Jcl