En el mundo sincrónico, C# hace que la gestión de todas las cosas desechables realmente bastante fácil:disposición a prueba de fallos en un mundo asíncrono
using(IDisposable someDisposable=bla.bla())
{
//do our bidding
}
//don't worry too much about it
Sin embargo, cuando vamos asíncrono, ya no tenemos la comodidad del bloque using
. Una de las mejores estrategias que he encontrado es la CCR iterator que nos permite usar el código asíncrono "como si fuera síncrono". Esto significa que podemos mantener nuestro bloque using
en el controlador de iteradores y no quedarnos atascados en la compleja decisión de cuándo disponer y detectar todos los casos en que se requiere su eliminación.
Sin embargo, en muchos casos, invocar CCR puede parecer exagerado, y para ser honesto, aunque estoy bastante cómodo con CCR, para los no iniciados puede parecer doble holandés.
Así que mi pregunta es: ¿qué otras estrategias existen para la gestión de los propios IDisposables, cuando los objetos desechables deben persistir más allá del alcance inmediato?
Buena pregunta. Solo estoy publicando este comentario para poder encontrarlo nuevamente. – MusiGenesis
@MusiGenesis: ¿No tiene más sentido "preferir" la pregunta para que sea más fácil de encontrar? – Gabe
@Gabe: ¿cómo se supone que debo recordar para ir a mirar mis favoritos? – MusiGenesis