나는 DataFlowEx을 사용하고 있으며 예외가 발생하면 전체 DataFlow가 종료되는 것을 피할 수 있습니다.하나의 블록에 오류가 발생했을 때 전체 데이터 흐름 네트워크를 종료하지 마십시오
나는 임의의 시간에 작업이 올 것 인 시스템이 있는데, 네트워크가 실패를 기록하고 특정 작업을 포기하고 다른 작업을 계속 실행하기를 원합니다.
It [a faulted block] should decline any further incoming messages. Here
DataflowEx takes a fast-fail approach on exception handling just like TPL Dataflow. When an exception is thrown, the low-level block ends to the Faulted state first. Then the Dataflow instance who is the parent of the failing block gets notified. It will immediately propagate the fatal error: notify its other children to shutdown immediately. After all its children is done/completed, the parent Dataflow also comes to its completion, with the original exception wrapped in the CompletionTask whose status is also Faulted. Here
이 거의 없습니다 실패에서 이동하기 블록처럼 보인다처럼 특히, TPL 및 DataFlowEx 모두 일을 설명서를 읽기에서
...
내 흐름을 많이 포함 파일 IO 및 가끔 예외가 발생할 것으로 예상하고 있습니다 (읽기/쓰기, 연결 실패, 권한 문제 ... 동안 네트워크 볼륨이 오프라인 상태가 됨)
전체 파이프 라인이 죽는 것을 원하지 않습니다. 블록이 경우 오류가 발생한 될 것
var result = pipeline.ProcessAsync(new[] { file1, file2 }).Result;
답변 해 주셔서 감사합니다. 당신의 말은 흥미 롭습니다. 특히 "예외 처리"에 관한 것입니다. 재 시도보다는 오히려 실패를 기록하고 작업 단위를 완전히 중지하고 싶었습니다. 특히 내 문제는 실제로 * 실제로 * 작업을 수행하는 함수 내부에, 나는 예외를 잡아라 -> 오류 로그 -> 그 작업 단위를 포기하는 것 -> 아무 일도 일어나지 않는 것처럼 계속한다는 것입니다. 문제는 함수 호출자가 함수가 반환되면 다시 'FileInfo'를 기다리고있는 함수입니다. –
위의 편집을 참조하십시오. –
본 적이 있습니다. 내 혼란은'NullTarget'의 사용을 완전히 이해하지 못하는 데서 비롯되었습니다. 나는 그것에 대해 읽을 것이고, 너무 많이 고마워 할 것이다. 추신 폴리는 절대적으로 똑똑해 보인다! 나는 내가 필요한 것을 바로 사용하기 시작할 것이다. (나 자신을 구현했을 것이다.) –