2014-11-07 2 views
1

이 코드를 감안할 때 완료]? 아니면 완료 블록 s_Batch 완료 블록에 연결된거야? 코드가 현재 로선는 TPL 데이터 흐름 체인

+0

[TPL Dataflow의 가능한 복제본, 모든 소스 데이터 블록이 완료된 경우에만 보증 완료] (http://stackoverflow.com/questions/13510094/tpl-dataflow-guarantee-completion-only-when-all-source-data) -blocks-completed) –

+0

위의 답변으로 귀하의 필요를 충족시킬 수 있습니까? –

답변

5

, 개별적으로 모든 블록에 Complete를 호출해야합니다 완료 전파를 요청하기 위해 블록을 연결하면서

s_Batch.Complete(); 
await s_Batch.Completion; 

s_Action.Complete(); 
await s_Action.Completion; 

당신은 그러나 DataflowLinkOptions을 사용할 수

s_Batch.LinkTo(s_Action, new DataflowLinkOptions {PropagateCompletion = true}); 
s_Batch.Complete(); 
await s_Batch.Completion; 

이 의지 완료 및 장애 통지를 링크 대상 블록 (예 : s_Action)에 전파하십시오.

1

l3arnon의 답변은 실제로 가장 간결하기 때문에 답변을 좋아합니다.

이것은 내가 수행 한 TPL 블록과 함께 사용 된 것입니다.

단점은 각 링크 된 블록에 대해이 패턴을 반복해야하기 때문에 꽤 반복적으로 반복됩니다.

관련 문제