Menubar

lunes, 30 de marzo de 2015

No se controló System.ComponentModel.Win32Exception // Error al crear identificador de ventana

Por J. Manuel Mar H. Editar
Compartir en Facebook
Compartir en Twitter
Compartir en MeWe
Enviar a Reddit
Guardar en Internet archive
Guardar en  archive.today
Enviar por email
Logo .Net  Trabajo para una empresa como desarrollador de software y trabajando en proyecto encuentro un mensaje como el que se describe en el título de post, bueno, ¿qué hacer en ese caso? (programando en .Net).

Publicidad

   Tardé mucho en encontrar la solución, agradezco en parte a éste sitio por darme una pista  http://social.msdn.microsoft.com/Forums/es-ES/770bb15e-ac4f-4cfa-bba3-02b08c29f668/no-se-control-systemcomponentmodelwin32exception-error-al-crear-identificador-de-ventana.

   El caso es que si nuestro programa carga muchísimas veces la misma ventana (aunque liberemos recursos) .net tarde o temprano falla, lo mejor es cargar la ventana (no importa que sea en un panel) y luego enviar los datos a ella mediante una función, en lugar de recargar una y otra vez la ventana con los nuevos datos.


Licencia de Creative Commons Esta obra está bajo una licencia de Creative Commons Reconocimiento 4.0 Internacional, haga clic aquí para conocer más detalles.


Compartir:



Comentar usando:

2 comentarios:

  1. Buenos dies;
    tengo el mismo problema; no entiendo como lo haces, ¿podrias enviar un codigo de ejemplo?
    Gracias

    ResponderBorrar
    Respuestas
    1. Básicamente lo que vas a hacer es lo siguiente:

      De manera global a tu formulario, desde el cual vas a llamar a otro creas una variable como la siguiente:

      Private frmemployeewindow As frmEmployee = Nothing

      donde frmEmployee es el tipo de ventana a abrir (en este caso los empleados a mostrar), recuerda, no vamos a estar creando y destruyendo la ventana por cada vez que lo necesitemos, después de muchas veces vb.net da error y nos cierra la aplicación, lo que vamos a hacer es crear una ventana y reutilizarla tantas veces como sea posible, y así resolver el problema System.ComponentModel.Win32Exception

      Ahora, hay que iniciar la variable la primera vez que la llamemos (esto va dentro de tu botón mostrar empleados)

      If IsNothing(frmemployeewindow) = True Then
      frmemployeewindow = New frmEmployee()
      End If


      If frmemployeewindow.Visible = False Then

      frmemployeewindow.Owner = Me
      frmemployeewindow.Visible = True
      frmemployeewindow.ShowEmployees()

      End If

      Al final, como puedes ver lo único que hay que hacer es invocar la función ShowEmployees(), pero ya no creamos la ventana una y otra vez, solo la reutilizamos y asi evitamos que vb.net irremediablemente se coma toda la memoria (aunque la liberemos), espero te sirva el truco.

      Borrar
:) :( ;) :D :-/ :x :P :-* =(( :-O X( :7 B-) #:-S :(( :)) =)) :-B :-c :)] ~X( :-h I-) =D7 @-) :-w 7:P 2):) :!! \m/ :-q :-bd ^#(^

Directorio de blogs, ¡agrega el tuyo!
Programas para el mantenimiento de Windows
Blog de seguridad informatica
Agrega tu blog o web - Buscar