Ich bin auf der Suche nach einer TPL-Datenflussblocklösung, die mehr als ein einzelnes Element enthalten kann, das mit mehreren Zielblöcken verknüpft werden kann, aber ein Element nur an einen bestimmten Zielblock weiterleiten kann, der ein Filter/Prädikat übergibt . Zu keinem Zeitpunkt sollte ein Gegenstand gleichzeitig an mehrere Zielblöcke geliefert werden, immer nur an denjenigen, der dem Filter entspricht, oder der Gegenstand kann verworfen werden. Ich mag BroadCastBlock nicht, weil, wenn ich es richtig verstehe, es keine Lieferung garantiert (oder?) Und die Filterung auf der Zielblockseite erfolgt, was bedeutet, dass BroadCastBlock im Wesentlichen Kopien jedes Elements an alle LinkedTo Zielblöcke sendet. Es kann auch nicht mehr als einen Gegenstand zu jeder Zeit halten, wenn ich es richtig verstehe. Ich möchte Post/Async nicht verwenden, sondern eine LinkTo-Kette beibehalten.TPL Dataflow, wie werden Elemente nur an einen bestimmten Zielblock unter vielen verknüpften Zielblöcken weitergeleitet?
Gibt es einen Weg um einen vollständigen benutzerdefinierten Datenflussblock? Oder verstehe ich nicht, wie BroadCastBlock funktioniert? Leider gibt es wirklich nicht viel Dokumentation, die ins Detail geht und Use Cases behandelt. Irgendwelche Ideen werden sehr geschätzt.
Wie funktioniert das technisch? Wird jedes Ziel versucht, bis es eine Übereinstimmung gibt, und wenn es nicht seinen Speicher verstopft, es sei denn, es wird vom Nullzielblock gelöscht? Und ist die Reihenfolge, von welcher Zielblock ich linkTo zunächst dann dann weiter ... wichtig? –
Ja, jedes Ziel wird der Reihe nach ausprobiert. Wenn kein Ziel übereinstimmt, bleibt das Objekt im Pufferblock. Und in diesem Fall ist das Verstopfen der Speicher keine große Sorge, verstopfen die Pipeline ist. Mit anderen Worten, es würde bedeuten, dass kein anderer Gegenstand von diesem Block gesendet wird, bis der problematische von irgendeinem Ziel akzeptiert wird. Deshalb ist der 'NullTarget'-Block notwendig. Und ja, die Reihenfolge ist wichtig, deshalb können Sie auch [angeben, ob Sie jedes Ziel an die Liste anhängen oder voranzustellen] (http://msdn.microsoft.com/en-us/library/system.threading.tasks .dataflow.dataflowlinkoptions.append.aspx). – svick
Sie sind wirklich der Typ, um zu TDF zu gehen. Genial. Danke vielmals. Nutzen Sie ausgiebig den TPL-Datenfluss oder warum das tiefe Wissen (unter anderem) dieser Bibliothek? Sie haben bereits erwähnt, dass Sie nicht mit dem MS Concurrency-Team verbunden sind. –