2011-10-01 8 views

Respuesta

18

Sí: si se cancela algo, no tiene errores ni se ejecutó por completo; por lo que sería procesado por NotOnRanToCompletion pero no por OnlyOnFaulted.

Así:

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

Ah, claro. Me olvidé de la cancelación. ¡Gracias! –

+0

así que si tiene controlador de eventos conectado a NotOnRanToCompletion y OnlyOnCancelled, ¿a cuál se llamará si se cancela la tarea? ¿O realmente no tiene sentido manejar ambos eventos al mismo tiempo? – user384080

3

OnlyOnFaulted significa que la continuación se ejecutará si la tarea antecedente lanza una excepción que no está a cargo de la tarea en sí, a menos se canceló la tarea.

NotOnRanToCompletion significa que la continuación se no plazo si la tarea se ejecutó hasta su finalización, es decir que se plazo si la tarea inició una excepción, o si fue cancelado .

En resumen, si desea que se ejecute la continuación si la tarea se cancela o lanzó una excepción, use NotOnRanToCompletion. Si desea que se ejecute solo si lanzó una excepción pero no si se cancela, use OnlyOnFaulted.

+0

así que si tiene controlador de eventos adjunto a NotOnRanToCompletion y OnlyOnCancelled, ¿a cuál se llamará si se cancela la tarea? ¿O realmente no tiene sentido manejar ambos eventos al mismo tiempo? – user384080