Ich bin verwirrt über den Unterschied zwischen dem Senden von Elementen über Post() oder SendAsync(). Mein Verständnis ist, dass in allen Fällen, sobald ein Element den Eingabepuffer eines Datenblocks erreicht hat, die Kontrolle an den aufrufenden Kontext zurückgegeben wird, richtig? Warum sollte ich dann SendAsync brauchen? Wenn meine Annahme falsch ist, frage ich mich im Gegensatz, warum jemand jemals Post() verwenden würde, wenn die ganze Idee der Verwendung von Datenblöcken darin besteht, eine gleichzeitige und asynchrone Umgebung einzurichten.TPL Dataflow, was ist der funktionale Unterschied zwischen Post() und SendAsync()?
Ich verstehe natürlich den Unterschied technisch darin, dass Post() einen bool zurückgibt, während SendAsync eine erwartete Aufgabe von bool zurückgibt. Aber welche Auswirkungen hat das? Wann würde die Rückgabe eines Bool (was ich verstehe, ist eine Bestätigung, ob der Gegenstand in die Warteschlange des Datenblocks gestellt wurde oder nicht) jemals verzögert werden? Ich verstehe die allgemeine Idee des Async/erwarten Parallelitätsframework, aber hier macht es nicht viel Sinn, denn anders als ein Bool wird das Ergebnis dessen, was mit dem übergebenen Element gemacht wird, nie an den Aufrufer zurückgegeben, sondern stattdessen in einem "out-queue" und entweder an verknüpfte Datenblöcke weitergeleitet oder verworfen.
Und gibt es irgendwelche Leistungsunterschiede zwischen den beiden Methoden beim Senden von Artikeln?
ok, aber mit Ihrer Erklärung, was ist dann die Logik hinter "Task"? Wenn es sich aufgrund eines Aufschubs nicht sofort einreichen kann, aber die Aufgabe später abgeschlossen wird, ist der Unterschied zwischen dem Bool wahr und falsch? –
Der Block kann schließlich entscheiden, diese Nachricht abzulehnen (z. B. wenn Sie den Block "abschließen"), in welchem Fall das Ergebnis der Aufgabe "falsch" ist. Siehe aktualisierte Antwort. –
Toll, das macht jetzt vollkommen Sinn, diese Möglichkeit ist mir völlig entfallen. Danke vielmals. –