我有兩個管道使用 System.Threading.Tasks.Dataflow 命名空間中的多個 Buffer、Batch 和 Action 塊。我知道一旦所有作業項都添加到管道中,就Complete應該呼叫該方法。但是,如果 Batch 塊一次處理 250 個專案,則呼叫Complete方法將實際呼叫Trigger內部方法以確保完成任何掛起的專案。
例如,如果 Batch 塊一次批處理 250 個專案,則將 251 個專案交給管道,并被Complete呼叫,剩下的一個專案是否會被整個管道處理?如果沒有,我假設我需要實作自己的標志和邏輯以確保所有剩余的專案以及第二個專案都通過管道?
uj5u.com熱心網友回復:
當 aBatchBlock<T>被方法標記為完成時Complete,它停止接受更多訊息,并發出包含當前在其輸入佇列中的所有剩余訊息的最后一批。顯然,最后一批的大小可以小于指定的batchSize. 簡而言之,您不必做任何特別的事情。在BatchBlock<T>它本身并不正確的事情。
當存盤在 的輸出佇列中的最后一批BatchBlock<T>被下游的鏈接塊接受時,BatchBlock<T>的Completion屬性轉換為RanToCompletion狀態。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/354208.html
