[C#] ¿Por qué y cómo evitar las fugas de memoria del controlador de eventos?


Answers

Sí, -= es suficiente. Sin embargo, podría ser bastante difícil hacer un seguimiento de cada evento asignado, nunca. (para más detalles, vea la publicación de Jon). Con respecto al patrón de diseño, eche un vistazo al patrón de eventos débiles .

Question

Me acabo de dar cuenta, al leer algunas preguntas y respuestas en , que agregar manejadores de eventos usando += en C # (o supongo, otros lenguajes .net) puede causar fugas de memoria comunes ...

He usado manejadores de eventos como este muchas veces, y nunca me di cuenta de que pueden causar, o han causado, pérdidas de memoria en mis aplicaciones.

¿Cómo funciona esto? (Es decir, ¿por qué esto realmente causa una pérdida de memoria)?
Como puedo solucionar este problema ? ¿Está usando -= para el mismo controlador de eventos lo suficiente?
¿Hay patrones de diseño comunes o mejores prácticas para manejar situaciones como esta?
Ejemplo: ¿Cómo se supone que debo manejar una aplicación que tiene muchos subprocesos diferentes, usando muchos manejadores de eventos diferentes para generar varios eventos en la UI?

¿Hay formas buenas y simples de monitorear esto de manera eficiente en una gran aplicación ya construida?