2016-01-27 2 views
8

In un caso come questo, dove il mio compito potrebbe tornare immediatamente a causa di alcune condizioni:async .NET/attendere: in questo caso dovrei restituire qualcosa?

public async Task Test(List<int> TestList) 
{ 
    if (TestList.Count() == 0) 
     return; 

    // Do something 
    await UploadListAsync(TestList); 
} 

È vero return;, devo usare Task.FromResult(false);, o c'è un modo più corretto?

+5

Solo un ritorno è corretto. –

risposta

11

Quando si utilizza un async, non si può restituire un Task esplicitamente (vedi edit) - il valore di ritorno è stato rinchiuso dal compilatore di essere il valore di ritorno della Task. Pertanto, i tuoi metodi async dovrebbero comportarsi come gli altri metodi e return se hanno bisogno di abbandonare la logica in anticipo.

EDIT: L'unica volta che si può restituire un Task durante una async è se il tipo di ritorno è Task<Task..., ma questo sarebbe ancora tornando interno Task, non quello esterno, dal momento che il compilatore ha fatto lo stesso involucro . Questo dovrebbe anche essere un caso d'uso piuttosto raro al contrario di await -ing una catena di Task s

0

Task è il nuovo void!

Per quanto riguarda i metodi async!