두 작업이 완료 될 때까지 기다리고 싶지만 완료된 상태가 아닙니다. 대기 시간은 일 때 모두 취소 상태 여야합니다.작업 취소
cancellationToken을 활성화 한 후 taskA와 taskB를 취소 할 때이 줄을 계속 표시합니까?
Task.WaitAll(taskA, taskB);
미리 감사드립니다.
두 작업이 완료 될 때까지 기다리고 싶지만 완료된 상태가 아닙니다. 대기 시간은 일 때 모두 취소 상태 여야합니다.작업 취소
cancellationToken을 활성화 한 후 taskA와 taskB를 취소 할 때이 줄을 계속 표시합니까?
Task.WaitAll(taskA, taskB);
미리 감사드립니다.
예, 두 작업이 모두 터미널 상태 인 경우 WaitAll
이 종료됩니다 (터미널 상태가 무엇이든).
그러나 작업이 잘못되거나 취소 된 경우 AggregateException
을 던집니다. 모든 작업이 성공적으로 완료된 경우에만 은 보통 (예외없이) 만 완료됩니다. 계속 그냥 가고 싶다면 그 예외를 잡아야합니다. AggregateException
의 InnerExceptions
을 보면 취소와 오류의 차이를 알 수 있습니다. 물론 taskA
과 taskB
을 직접 볼 수도 있습니다. 예외 부분에 documentation에서
AggregateException 작업 인스턴스의 하나 이상이 취소되었습니다. 타스크가 취소 된 경우 AggregateException에는 InnerExceptions 콜렉션에 OperationCanceledException이 포함됩니다. 원래 작업이 완료되면 완료 작업을 반환 - 당신이 .NET 4.5 및 비동기 방식을 사용하는 경우,이 비동기 적으로 대기가 수행하는 대신
는Task.WhenAll
을 사용할 수 있다는
참고.