¿Por qué es legal lo siguiente?¿Es seguro registrarse con CancellationToken.None?
CancellationToken.None.Register(delegate { });
¿Por qué, por ejemplo, Register
no lanzar una excepción en esta lista? ¿Es porque lo anterior equivale a NOP?
Antecedentes: La razón de esta pregunta es conocer si un método de aceptar una CancellationToken
necesidades que ha de codificarse defensiva contra CancellationToken.None
cuando se trata de registro.
Me doy cuenta de que CancellationToken es un tipo de valor y, por lo tanto, siempre tiene un valor con CancellationToken.None que es equivalente a uno que está predefinido. ¿Crees, sin embargo, que el registro es un NOP solo para los tokens vacíos y por lo tanto no requiere defensa? –
@Atif: Acabo de revisar y comprobar qué sucede en realidad: es seguro y no requiere defensa. (Edité mi respuesta para mostrar) Hay un cheque en el método Register que simplemente devuelve un nuevo registro, y ignora por completo al delegado si el token no se puede cancelar, que es el caso con CT.None. –
Interesante. No encontré ese cheque que mencionas :), por lo tanto, mi pregunta. –