Il tuo codice sembra perfetto. Dà al tuo interlocutore l'opportunità di fare qualcosa di utile nei momenti che stai aspettando, invece di fare un'attesa impegnativa finché tutto è finito.
La cosa bella di usare async-await invece di usare ContinueWith è che il tuo codice sembra abbastanza sincrono. È facile vedere in quale ordine verranno eseguite le dichiarazioni. Continua Con consente inoltre di specificare l'ordine, ma è un po 'più difficile da vedere.
Se un thread entra in una procedura asincrona esegue la procedura fino a quando non soddisfa un'attesa. Invece di aspettare fino a quando la procedura attesa è finita, il controllo viene restituito al chiamante che può continuare a eseguire le istruzioni successive fino a quando non incontra un'attesa, dove viene dato il controllo al chiamante ecc. Una volta che tutti sono in attesa e il tuo OpenAsync è finito il thread continua a fare le dichiarazioni dopo OpenAsync fino a quando non incontra un'altra attesa.
Qualcuno qui in StackOverflow (ahimè ha perso il suo nome) mi ha spiegato una volta che il processo async-await in un breakfast metaphor.
Un'introduzione molto utile, Stephen Cleary about Async-await. Ti rendiamo conto anche di come async-await previene i problemi con InvokeRequired
fonte
2016-05-02 09:36:43
La mia comprensione è corretta? Se abbiamo due attese, il codice dopo la seconda attesa sarebbe solo la continuazione per la seconda attesa, non per la prima attesa Se non fosse il caso, il codice dopo la seconda attesa sarebbe stato eseguito due volte (prima, come continuazione alla prima Attendibile e secondo come continuazione del secondo attendente – YakRangi
@Rouftantical: Sì, come ho detto "procede da dove era stato interrotto". –