Voglio catena Task
s, quindi avviare la catena in parallelo. Questo frammento è solo per illustrare la mia domanda:Modo corretto per concatenare Task
var taskOrig = new Task(() => { });
var task = taskOrig;
foreach (var msg in messages)
{
task=task.ContinueWith(t => Console.WriteLine(msg));
}
taskOrig.Start();
Tutto funziona bene, tranne un po 'perfezionista dentro di me non piace aver metodo vuoto eseguito prima () => { }
.
C'è un modo per evitarlo?
Capisco Ha a malapena influire sulle prestazioni (a meno che non lo facciate molto spesso), ma ancora. Le prestazioni sono importanti nel mio caso, quindi controllare se l'attività esiste in ogni iterazione non è il modo di farlo.
"la performance è nel mio caso, in modo da controllare se compito esiste in ogni iterazione non è il modo per farlo. ": il tempo necessario è trascurabile rispetto all'esecuzione effettiva del compito. A meno che tu non abbia realmente misurato un successo in termini di prestazioni, è chiaramente un caso di ottimizzazione prematura. –
@ThomasLevesque hai probabilmente ragione, ho solo pensato che forse mi sono perso qualcosa nell'API di creazione 'Task'. Avrò la possibilità di misurare il successo delle prestazioni più tardi. – Anri
Potreste trovare interessante TPL DataFlow – sll