Sto cercando di asynchronize il mio codice originaleeseguire un task gruppo asincrone quando un certo ordine di esecuzione deve essere preservato
for(var item in items)
{
dbAccess.Save(item);
}
che funziona bene:
var tasks = new List<Task>();
for(var item in items)
{
tasks.Add(dbAccess.SaveAsync(item));
}
await Task.WhenAll(tasks);
Tuttavia, ho bisogno di aggiungere un ulteriore clean-up call prima di salvare e oggetto ai miei DB:
var tasks = new List<Task>();
for(var item in items)
{
tasks.Add(dbAccess.DeleteAsync(item.id));
tasks.Add(dbAccess.SaveAsync(item));
}
await Task.WhenAll(tasks);
Questo codice di cui sopra non è corretto in quanto SaveAs ync non dovrebbe essere eseguito fino al completamento del DeleteAsync corrispondente. In altre parole, la cancellazione deve sempre andare prima del salvataggio per ogni articolo, ma l'ordine degli articoli non ha importanza.
Esiste un modo perfetto per farlo?
Che ne dici di emettere tutte le eliminazioni prima, aspettandole, quindi emettendo tutti i salvataggi e quindi aspettando quelli? Altrimenti dovresti impacchettare ogni cancellazione + salvataggio in una singola attività. –
Buon punto Lasse, ho semplificato il mio codice per lo scopo di questa domanda. Non riesco ad attuare il tuo suggerimento perché c'è un po 'di più che non sto mostrando. In realtà DeleteAsync restituisce qualcos'altro che deve essere passato a SaveAsync. – AstroSharp
Quindi? Raggrupparli in un'attività che prima chiama deleteasync, quindi chiama saveasync in seguito? –