2011-10-01 24 views

Trả lời

18

Có: nếu nội dung nào đó bị hủy, đó không phải lỗi hoặc không chạy đến hoàn thành; do đó, sẽ được xử lý bởi NotOnRanToCompletion nhưng không phải bởi OnlyOnFaulted.

Vì vậy:

NotOnRanToCompletion | NotOnFaulted == OnlyOnCancelled 
NotOnCanceled  | NotOnFaulted == OnlyOnRanToCompletion 
NotOnRanToCompletion | NotOnCanceld == OnlyOnFaulted 
+0

Ah, phải. Tôi quên mất việc hủy bỏ. Cảm ơn! –

+0

vì vậy nếu bạn có trình xử lý sự kiện được kết hợp với cả NotOnRanToCompletion và OnlyOnCancelled, trình xử lý nào sẽ được gọi nếu nhiệm vụ bị hủy? HOẶC nó thực sự không thực hiện bất kỳ ý nghĩa để xử lý cả hai sự kiện cùng một lúc? – user384080

3

OnlyOnFaulted có nghĩa là việc tiếp tục sẽ chạy nếu nhiệm vụ tiền đề ném một ngoại lệ mà không được xử lý bởi các nhiệm vụ riêng của mình, trừ khi nhiệm vụ đã bị hủy bỏ.

NotOnRanToCompletion có nghĩa là việc tiếp tục sẽ không chạy nếu nhiệm vụ chạy đến khi kết thúc, có nghĩa là để nói nó sẽ chạy nếu nhiệm vụ ném một ngoại lệ, hoặc nếu nó đã bị hủy bỏ.

Vì vậy, để tóm tắt, nếu bạn muốn tiếp tục chạy nếu tác vụ bị hủy hoặc đã ném ngoại lệ, hãy sử dụng NotOnRanToCompletion. Nếu bạn muốn nó chạy chỉ khi nó ném một ngoại lệ nhưng không phải nếu nó bị hủy bỏ, sử dụng OnlyOnFaulted.

+0

vì vậy nếu bạn có trình xử lý sự kiện được kết hợp với cả NotOnRanToCompletion và OnlyOnCancelled, trình xử lý nào sẽ được gọi nếu nhiệm vụ bị hủy? HOẶC nó thực sự không thực hiện bất kỳ ý nghĩa để xử lý cả hai sự kiện cùng một lúc ??? – user384080

Các vấn đề liên quan