TPL DataFlow부터 시작하겠습니다. 다음 작업 코드가 생성되었습니다. 링크 된 블록이 완료되지 않습니다.
public async void ReadItems(ITargetBlock<SourceCodeFile> target)
{
foreach(var item in Source)
{
await target.SendAsync(item); //when To use post instead of sendasync?
}
}
target.Complete();
지금 나는 BufferBlock (readFilesBlock를) cosume이 잘 작동이
while (await readFilesBlock.OutputAvailableAsync())
{
var file = await readFilesBlock.ReceiveAsync();
ActionBlock<SourceCodeFile> action = new ActionBlock<SourceCodeFile>(item => storeResultsInBag(resultBag, item));
await action.SendAsync(file);
}
같은 다음 readFilesBlock는 BufferBlock 그것은 다음과 같이 작성된다. 는 이제 링크 기능
내가 시도 사용할 :
var storeFilesInBagAction = new ActionBlock<SourceCodeFile>(item => storeResultsInBag(resultBag, item));
readFilesBlock.LinkTo(storeFilesInBagAction);
await storeFilesInBagAction.Completion;
을하지만 이번에는 내가 완료를 못할거야.
내가 뭘 잘못하고 있니?
Bagaction의 저장소 파일을 기다리지 않고 항목을 반환하지 않았습니다.
1. '비동기 무효화'를 피하십시오. 2. 각 파일에 대해 새로운'ActionBlock'을 생성 할 필요는 없습니다. – svick