Problema de Winforms – Error al crear el identificador de ventana

Estamos viendo este error en una aplicación Winform. ¿Alguien puede ayudarme sobre por qué verá este error y, lo que es más importante, cómo solucionarlo o evitar que suceda?

 System.ComponentModel.Win32Exception: Error al crear el identificador de ventana.
    en System.Windows.Forms.NativeWindow.CreateHandle (CreateParams cp)
    en System.Windows.Forms.Control.CreateHandle ()
    en System.Windows.Forms.Control.CreateControl (Boolean fIgnoreVisible)
    en System.Windows.Forms.Control.CreateControl ()
    en System.Windows.Forms.Control.OnVisibleChanged (EventArgs e)
    en System.Windows.Forms.ButtonBase.OnVisibleChanged (EventArgs e)

¿Ha ejecutado el Explorador de procesos o el Administrador de tareas de Windows para observar los Objetos, Manijas, Subprocesos y objetos USER de GDI? De lo contrario, seleccione las columnas que desea ver (Administrador de tareas, elija Ver-> Seleccionar columnas … Luego ejecute su aplicación y eche un vistazo a esas columnas para esa aplicación y vea si una de ellas está creciendo realmente grande.

Es posible que tengas componentes de UI que creas que están limpios pero que no han sido eliminados.

Aquí hay un enlace sobre esto que podría ser útil.

¡Buena suerte!

El límite del identificador de Windows para su aplicación es de 10,000 identificadores. Recibirá el error porque su progtwig está creando demasiados controladores. Necesitarás encontrar la pérdida de memoria. Como otros usuarios han sugerido, use un Profiler de memoria. Yo uso el .Net Memory Profiler también. Además, asegúrese de llamar al método de eliminación de los controles si los está eliminando de un formulario antes de que se cierre el formulario (de lo contrario, los controles no se eliminarán). También deberá asegurarse de que no haya eventos registrados con el control. Yo mismo tengo el mismo problema, y ​​a pesar de lo que ya sé, todavía tengo algunas pérdidas de memoria que me siguen eludiendo …

Vea este post mío sobre “Error al crear el identificador de ventana” y cómo se relaciona con los objetos de usuario y el montón de escritorio. Proporciono algunas soluciones.

Este problema casi siempre está relacionado con el recuento de objetos GDI, el recuento de objetos de usuario o el recuento de identificadores y, por lo general, no debido a una condición de falta de memoria en su máquina.

Cuando estoy rastreando uno de estos errores, abro ProcessExplorer y miro estas columnas: Handles, Threads, Objetos GDI, Objetos de USER, Bytes privados, Tamaño virtual y Working Set.

(En mi experiencia, el problema suele ser una fuga de objeto debido a que un controlador de eventos mantiene el objeto y evita que se elimine).