6 messaggi dal 06 luglio 2011
Ciao a tutti,
quando utilizzo il metodo ContinueWith di Task, ed utilizzo Wait, WaitAll o WhenAll, l'esecuzione viene messa in attesa fino al completamento della prima task della catena, dopodiché prosegue normalmente eseguendo le altre task in background.
Ad esempio:
public void TestContinuation()
        {
            Console.WriteLine("Start");

            var task1 = AwaitFor(3000);
            task1 = task1.ContinueWith(prev => AwaitFor(6000));
            task1.Wait();

            Console.WriteLine("End");
        }

async Task AwaitFor(int milliseconds)
        {
            await Task.Delay(milliseconds);
            Console.WriteLine("Printed at: " + DateTime.Now.ToString("HH:mm:ss"));
        }


Mi restituisce l'output:

Start
Printed at: 13:50:10
End
Printed at: 13:50:16

Quindi dopo 3 secondi la prima task finisce e prosegue l'esecuzione del metodo stampando End nonostante la continuazione non sia stata ancora eseguita.
Come faccio a sapere quando l'intera catena termina l'esecuzione in modo da stampare End quando tutto sia effettivamente concluso?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.