我是TPL-Dataflow的自我培訓,我已經讀過使用消息的不可變對象是要走的路。消息類型與DataFlow塊
爲了符合這一點,我爲每個塊輸入和輸出設計了特定的類。
不幸的是,當我將阻擋對方,因爲塊輸入和輸出類型有很大的不同,它導致鏈接到的TransformBlock
激增:
var proc1 = new TransformBlock<proc1In,proc1Out>(...
var convertOut1toIn2 = new TransformBlock<proc1Out,proc2In>(p1 => new proc2In { ...
var proc2 = TransformBlock<proc2In,proc2Out>(...
proc1.LinkTo(convertOut1ToIn2);
convertOut1ToIn2.LinkTo(proc2);
使用批處理和加入塊後合併結果一起讓我與一個非常混亂的代碼糾纏在一起。
我在互聯網上閱讀的每個樣本都使用簡單的類型,如int
,string
......我還沒有找到任何處理更復雜類型的內容。
我覺得使用單個大對象並將其引用通過所有塊的衝動。在做這個錯誤之前,我想知道是否有更好的方法去做。
此外[此問題](http://stackoverflow.com/questions/26560374/dataflow-with-splitting-work-to-small-jobs-and-then-group-again#comment41783122_26580148)幫助了很多過濾/從多個結果合併塊。 – Larry