Sono confuso circa la differenza tra l'invio di articoli tramite Post() o SendAsync(). La mia comprensione è che in tutti i casi una volta che un oggetto ha raggiunto il buffer di input di un blocco di dati, il controllo viene restituito al contesto di chiamata, corretto? Allora perché dovrei mai aver bisogno di SendAsync? Se la mia ipotesi non è corretta, mi chiedo, al contrario, perché mai qualcuno utilizzerebbe Post() se l'idea di utilizzare i blocchi di dati è quella di stabilire un ambiente concorrente e asincrono.TPL Dataflow, qual è la differenza funzionale tra Post() e SendAsync()?
Comprendo ovviamente la differenza tecnicamente in quel post() restituisce un valore booleano mentre SendAsync restituisce un attività attendibile di bool. Ma quali implicazioni ha? Quando il ritorno di un bool (che capisco è una conferma se l'oggetto è stato inserito nella coda del blocco dati o meno) viene mai ritardato? Comprendo l'idea generale del framework di concomitanza asincrona/attendi, ma qui non ha molto senso perché, a parte un bool, i risultati di tutto ciò che viene fatto all'elemento passato non vengono mai restituiti al chiamante ma inseriti in un "out-queue" e inoltrati a blocchi di dati collegati o scartati.
E c'è qualche differenza di prestazioni tra i due metodi quando si inviano gli articoli?
ok ma data la tua spiegazione, allora qual è la logica dietro 'Task'? Se non può essere inviato immediatamente a causa del posticipo, ma l'attività termina in un secondo momento, qual è la differenza tra il vero bool e il falso? –
Il blocco può eventualmente decidere di rifiutare quel messaggio (ad es., Se si completa il blocco), nel qual caso il risultato dell'attività sarà 'falso'. Vedi risposta aggiornata. –
grandioso, questo ora ha perfettamente senso, questa possibilità mi è completamente sfuggita di mente. Molte grazie. –