ContinuationOption.AttachedToParent 플래그에 문제가 있습니다. 내가 아는TPL 계속 작업 : 누가 상위 작업인지 확실하지 않음
Task parentTask = Task.Start(() =>
{
Task childTask = Task.Start(() => doSomething(),
ContinuationOption.AttachedToParent);
childTask.ContinueWith(() => followingMethod(),
ContinuationOption.AttachedToParent);
}
"해봐요()가"던져 예외 childTask이 실패하고 parentTask도 실패 할 경우 ContinuationOption.AttachedToParent 옵션 이유는
이 내 의사 코드이다.
followingMethod()가 예외를 throw하지만 parentTask 상태가 Completed 인 경우 동일한 동작이 발생할 것으로 예상됩니다.
내가 잘못했거나 계속 작업의 "부모"작업이 내 "parentTask"가 아닙니까?
나는 childTask가 continuationTask의 전제이며 그것이 내가 원하는 "체인"이라는 것을 알고있다. 무엇이 나를 괴롭히는 사실은 continuationTask가 실패 할 경우 parentTask가 실패하지 않는다는 것입니다. 반면 childTask가 실패하면 부모 태스크도 실패합니다. 두 번째 세대 태스크는 모두 두 번째 태스크가 Attached로 표시된 경우 동일한 방식으로 내 1 세대 태스크에 영향을 주어야합니다. – SteBert
@ user3798930 글쎄, .Net의 디자이너들은 분명히 의견이 맞지 않습니다.귀하의 경우에는'childTask'는 결코 부모가 아닙니다. 연속은 parentTask 인 부모에게 연결될 것입니다. – i3arnon
나는 그가 그 childTask가 부모가되어야한다는 것을 암시했다고 생각하지 않는다. 연속 작업은 선행 (childTask)과 상위 (parentTask)를 모두 가질 수 있으며 첨부 된 하위 작업의 예외는 선행 작업과 관계없이 상위 작업으로 다시 전파됩니다. –