elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  :) Aca de nuevo ---- Cerrar programa y liberar todas las variables
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: :) Aca de nuevo ---- Cerrar programa y liberar todas las variables  (Leído 2,271 veces)
luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
:) Aca de nuevo ---- Cerrar programa y liberar todas las variables
« en: 21 Noviembre 2014, 08:47 am »

Hola

Tengo esto para cerrar el programa ,pero recién me doy cuenta que algunas variables no se liberan ya que cuando lo vuelvo a ejecutar me suma los anteriores datos.cuando debería ser de cero,

que le faltaria a esto para liberar todo ?  

Código
  1. Private Sub CerrarProgramaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CerrarProgramaToolStripMenuItem.Click
  2.        If MessageBox.Show("Esta seguro que desea Cerrar la aplicacion", "Cerrar ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
  3.  
  4.            Me.Close()
  5.  
  6.        End If


Luis


« Última modificación: 23 Noviembre 2014, 07:56 am por luis456 » En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: :) Aca de nuevo ---- Cerrar programa y liberar todas las variables
« Respuesta #1 en: 21 Noviembre 2014, 19:23 pm »

Buenas

1) Muestra las declaraciones de dichas variables, y la parte del código donde accedes a esa variable esperando que sea "0".

2) ¿Ese es el único y principal Form de la aplicación?, ya que en tal caso estás terminando la aplicación correctamente.

Las variables (normales) solo existen durante la instancia del Form/Class donde se encuentren, y si ese es el Form principal entonces todo tipo de variable/objeto solo existe mientras la app esté en ejecución, es decir, si terminas la app y la vuelves a iniciar toda variable debería volver a su valor por defecto (ya sea este valor "0" o el valor que le asignaste por defecto),
de todas formas no se si ese es el Form principal o un Form secundarío ni si estás usando variables compartidas u otra cosa, así que prueba a utilizar el evento FormClosing para "resetear" las variables, aunque esto no es necesario en caso de que solo tengas un Form en tu aplicación:

Form1:
Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Shown(ByVal sender As Object, ByVal e As EventArgs) _
  4.    Handles MyBase.Shown
  5.  
  6.        Form2.Show()
  7.        Debug.WriteLine(String.Format("Valor de 'Var' despues de cargar el Form2: {0}", CStr(Form2.var))) ' 5
  8.  
  9.        Form2.Close()
  10.        Debug.WriteLine(String.Format("Valor de 'Var' despues de cerrar el Form2 de forma normal: {0}", CStr(Form2.var))) ' 5
  11.  
  12.        Form2.Close(resetVars:=True)
  13.        Debug.WriteLine(String.Format("Valor de 'Var' despues de cerrar el Form2 de forma alterna: {0}", CStr(Form2.var))) ' 1
  14.  
  15.    End Sub
  16.  
  17. End Class

Form2:
Código
  1. Public Class Form2
  2.  
  3.    ' Declaro e inicializo la variable con el valor por defecto "1".
  4.    Public Shared var As Integer = 1
  5.  
  6.    Private Sub Form2_Load(ByVal sender As Object, ByVal e As EventArgs) _
  7.    Handles MyBase.Load
  8.  
  9.        ' Cambio el valor de Var al cargar este Form.
  10.        var = 5
  11.  
  12.    End Sub
  13.  
  14.    Public Overloads Sub Close(ByVal resetVars As Boolean)
  15.  
  16.        If resetVars Then ' reseteo la variable a su valor or defecto.
  17.            var = 1
  18.        End If
  19.  
  20.        ' Llamo al método close de la clase base.
  21.        MyBase.Close()
  22.  
  23.    End Sub
  24.  
  25. End Class

PD: Otra cosa que puedes hacer (en caso de que sea un Form secundario) es utilizar el método Form.Dispose, con esto se liberan sus recursos.

Saludos


« Última modificación: 21 Noviembre 2014, 20:00 pm por Eleкtro » En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: :) Aca de nuevo ---- Cerrar programa y liberar todas las variables
« Respuesta #2 en: 22 Noviembre 2014, 12:44 pm »

Bien el problema  creo haberlo resuelto con :

Código
  1. Me.Refresh()


ya que como dice Elektro estaba cerrando bien el Form ya que es  unico :)

Código
  1. Me.Close()


Luis
En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines