destruir formularios en .net

Sr_RoS

Hola, sigo trabajando con .net xD

Como se "descarga" de memoria un formulario en vb.net?

por cuestiones de orden prefiero destruir un formulario cada vez que tengo que requerir unos datos pero cuando

cuando quiero cerrar el programa uso
En Form1.vb:

Me.Close()

Y para mostrar otro formulario uso

Form2.Show()
Me.Hide()

Me gustaria destruir o descargar de memoria el form1 (por ejemplo) para que se pueda ejectuar de nuevo el evento "OnLoad" del form1 cuando lo llame de nuevo

un saludo y gracias por vuestras respuestas

GaN2

Lanzalo con el ShowDialog()

Form1 formulario = new Form1();
formulario.ShowDialog();
formulario.Dispose();

Asi teoricamente te lo borra/libera de memoria, creo que debería funcionar.

bLaKnI

2 consejos:

  • no olvides que existe el metodo "closing" aunque no este referenciado en metodos propios del form. No hace falta hacerle un Handler.

  • Te diria que crees una funcion externa personal que sea la que se llama en el OnLoad, de esta manera, te "liberas" de la necesidad de volver a cargar el formulario para ejecutar el codigo que hay en el OnLoad, y sencillamente tienes independencia pudiendo llamar siempre que quieras a la funcion. Es decir:

OnLoad:

"hello world".

Pasaria a:

Func HelloWorld:

"Hello world".

OnLoad:

call HelloWorld.

y siempre que quieras, llamas al hello world.
Es basico y lógico, pero en VB muchas veces olvidamos lo que significa trabajar con programación sequencial... xD

Soltrac

Joder q complicados.

.Close()

Y no es por nada, .net trabaja orientado a objetos

Form1.Show() no es

En todo caso

Dim Miform As New Form1
Miform.Show()

Y lo quitas de memoria con .Close()

Cuando quieras crear otro, creas otro objeto y punto. Por supuesto siempre necesitas un formulario llamémosle inicial q haga esta gestión, porque las cosas no se llaman y crean solas XDDD.

Y0K3S3

#3

touche

Un consejo... C# por dios...

Soltrac

#5 Cualquier código de VB .NET se puede pasar a C# y viceversa, así q imagina la diferencia....

kas
using(myFormulario f1 = new FmyFormulario)
{
    f1.ShowDialog();
}

El envoltorio using funciona con cualquier tipo que implemente la interfaz IDisposable y automatiza su destrucción.

Por otra parte, Form expone el metodo Close(), para cerrar y destruir un formulario.

Y0K3S3

#6

Solo te dire una palabra Nhibernate dime si la conoces y entonces dime si se puede usar en vb y si sabes algun ORM decente para vb si es que hay

Y te diria más pero paso que con esa palabra ya tendras para empezar a aprender a programar de forma inteligente.ADO es para noobs o para consultoras que contratan noobs/juniors que no saben programar.

Welcome to the real world

kas

YOK3S3 yo de ti editaria una vez mas el post.

Mas que nada porque VB y C# trabajn sobre el mismo CLR.

Gracias por sentirte tan superior.

Sin entrar en framworks externos, hay poquisimas cosas que no se puedan hacer con VB respecto de C#.

Si NHibernate no esta bien programado no es problema del end-programmer, ya que no veo la utilidad de forzar un lenguaje de programacion, cuando .NET precisamente lo que busca es pasar de los lenguajes para tirar al CLR directamente, diseñando los compiladores para que el mismo codigo en diferente lenguaje den el mismo CLR.

PD: Tiene buena pinta esto del modelo relacional de objetos. Habra que hecharle un ojo.

Y0K3S3

#9

Se me fue queria decir ORM en vez de CLR

#9

Quieres otra cosa Castle Project :-) ; eso ya es la OST**

Soltrac

#10 Q me quieras timar:
NHibernate is a port of Hibernate Core for Java to the .NET Framework.

Desconozco NHibernate, y la verdad porque yo use ADO.NET, que viene de serie con el framework de .NET y tu utilices eso de NHibernate no te hace ser mejor programador q nadie. Además, que me parece absurdo q me compares un software a lo q yo te he dicho de q un codigo en VB pasa a C# y viceversa.

Enchufa el reflector, decompila lo quieras y pasalo de C# y VB y viceversa.

Y baja esos humos de welcome to real world, q yo llevo trabajando muchos años con .NET, desgracidamente

Y0K3S3

#11

Llevas muchos años? entonces habras observado que de msdn hay tropecientos mil más articulos de c# que de vb. Ya no es question de potencia si no de soporte y de herramientas de terceros, las buenas estan codificadas en c# y con eso ya te lo digo todo.

Pd: Ojo que Vb.Net esta genial...Pero te recomiendo que migres a c#

Soltrac

#12 No, he observado q con un click en el MSDN cualquier codigo pasa de C# a VB y el único motivo de usar C# es venir acostumbrado de la sintaxis de C y C++, igual q el q utilice VB.NET, lo utilizará porque venga acostumbrado de la sintaxis de VB y el q venga de Java utilizará J#.

Tan simple como eso, ninguno es superior a otro porque precisamente esa es la gracia del .net framework.

Y como ya te he dicho, ser supremo del "Nhibernate", coge cualquier ejecutable, dll o lo q quieras desarrollada en .NET, abre el reflector y decompilala, verás como te deja pasarla a sintaxis de VB o C# sin problemas.

Soltrac

Hola reflector:

Y0K3S3

#13

Hay cosas nuevas que solo estan en c#...Pero bueno.

bLaKnI

Yonkese, no comprendo lo de "touché"...

Sr_RoS

La verdad es que estoy mirando a ver si vació todos los textbox "a mano" o "descargo" de memoria el formulario entero todavía lo estoy viendo.

El uso de Visual Basic es, simplemente es que me llevo mucho mejor con el entorno a la hora de programar, y he salido de muchos apuros con el.
De todas formas son los dos de Micro$oft.
Puesto que visual Studio 2005 tengo entendido que deja migrar de uno a otro tenia pensado hacerlo en Visual Basic y luego, si acaso pasarlo a C# y verificarlo después.

la verdad, para un PFC queda mucho mejor C# que VB.net, aunque sean lo mismo.

PD:
Una pregunta a riesgo de parecer ignorante......
Que es Nhibernate? xD
Y el reflector ese para que sirve?

Gracias por la info.

kas

#17

1) NHibernate parece ser un add-on para .NET (C# only) que permite agilizar los programas de gestion que se basan la comunicacion con la base de datos, abstrayendo la capa de conexion, envio y recepcion de datos para que sea practicamente transparente al programador, lo que aumenta el rendimiento de éste al preocuparse de menos cosas.

2) Reflector es una herramienta que mediante System.Reflection es capaz de coger cualquier libreria desarrollada en .NET y sacar su codigo fuente (si no se ha utilizado el Dotfuscator).
Esto es posible ya que el codigo no se compila, si no que se "traduce" a un "lenguaje" intermedio entre el codigo maquina y el de alto nivel (CLR), para posteriormente ser "compilado en tiempo real" (JIT Compiler).
Ademas, como ves en la screen, te permite ver el codigo en el lenguaje que quieras.

Sr_RoS

#18 muchas gracias por la info

tengo que hacer un servicio web (todavia no se como) para comunicarse con mi programa y transmitir ficheros xml (generados a partir de una consulta a una bd) con la respuesta, asiesque no os extrañe que vuelva a preguntar xD

Buscaré info sobre NHibernate xD

BrOkeR

Siento continuar con el offtopic pero queria aportar datos objetivos:

* According to a survey conducted by Visual Studio Magazine (which self-identifies as a VB centric publication) "41 percent said they used C#, 34 percent programmed in VB.NET, while 25 percent responded with 'other.'" [1]
* Stephen Wiley, marketing product manager at Apress has reported "C# titles outsell VB.NET title books handily, by somewhere between a 2-1 and 3-1 margin."[1]
* blogs.msdn.com, the blogging site for Microsoft employees, has 27,500 posts that discuss C#, while only 8,880 mention VB.Net (November 15, 2007)
* Google Groups, a Usenet search engine returns 36,900 hits for "VB .Net", and 65,700 for C#
* Amazon returns 9,923 hits for C#, and 2,149 hits for "Visual Basic .Net" (November 15, 2007).

http://en.wikipedia.org/wiki/Comparison_of_C_sharp_and_Visual_Basic_.NET#Adoption_and_community_support

bLaKnI

Pero tan parecido es el C# al VB?
Mira que le tengo algo cojido que no se...

Basicamente se deja hacer todo, esto lo tengo claro pq algunas cosillas he hecho, pero que tal al gestion de forms tal como lo hace VB? Se deja programar igualmente?

No se macho, es que tengo leido por ahí que C# no es tan magnifico como parece, de hecho, parece que es una cosa guarra guarra...

Como lo veis?
Y en contrapunto, porque no seguir con C++?
Puedo programar como lo haria en C++ en C#? Exactamente igual?
Que tal se conporta con librerias externas como Glut o VTK? Se pueden importar de la misma forma?

Dadme algun motivo evidente del porque deba destinar mi atención al # y no seguir con el ++, please... :)

Esq tengo un proyectillo entre manos, y debo decidir si tirar por Java, C# o C++ y los tres me tienen asqueado, ya que deberemos programar para algo bastante "especial"...

Help please :)

Sr_RoS

#21
lee el post #13

un poco de historia:
la .net framework es un proyecto de Micro$ost(M$) para hacerse con el mercado de java, despues de que la UE denunciara a M$ por competencia desleal al introducir su propia maquina virtual de java (con algunas clases distintas) en los sistemas XP "de serie".

el proyecto .netframework lo que busca es que no importe el lenguaje de programacion, ya que luego se traduce a un lenguje de mas bajo nivel (corrijanme si me equivoco)
sin llegar a ser un lenguaje "interpretado" como lo es el ".html"

para ello sacaron tres lenguajes, c# (parecido a C++), vb.net (com visual basic, pero orientado a objetos) y J# (parecido a java), para que elijas el que mas te guste.

supongo que le diferencia entre ellos depende de la habilidad del programador para optimizar codigo.

Soltrac

#21

Lo único q tienen en común C# y C++ son la C eh? En serio, te pongo el ejemplo más fácil, en C# no existen punteros ni direcciones de memoria y por supuesto, no conozco esas librerias pero si están desarrolladas para C++ no se van a poder importar en C#, son dos lenguajes de programación que no tienen nada q ver. Simplemente Microsoft le llamó C# porque copió la sintaxis de C y C++.

Por ejemplo, en C# un entero también se define como "int a;".

Si el proyectillo es un programa de gestión de alguna empresa, tira por C# o VB.NET porque el ADO te simplifica la vida. Si no quieres q te decompilen el codigo, no lo uses, porque aunq el obfuscator te ayuda algo, no deja de transformar "int i; i=1; i=j+2" a "a b; a = 1; a=c+2;" y con un poco de paciencia se sacan trozos de codigo también.

Java lo utilizaría si buscas portabilidad a Linux, además de q tiene 9392392132 componentes gratuitos (.NET tb los tiene, ojo, pero los mejores son de pago). No se si el código se decompila tan fácil como en .NET.

C++ lo utilizaría cuando lo demás se te queda corto. Hay veces que necesitas trabajar con accesos a memoria y cosillas así. Me parecería una locura desarrollar por ejemplo un programa q acceda a una base de datos en C++, ya que con los 2 anteriores lo haces de una forma más sencilla y sin tener q preocuparte de q se t e ha olvidado poner un puntero o una dirección de memoria.

Sobre el uso de C# o VB.NET, yo también estoy de acuerdo de q C# se utiliza más. Creo que todos estaremos de acuerdo a qe se debe a su sintaxis similar a C y C++.

bLaKnI

Thx Ros! ^^
Thx Soltrac! ^^

:)

Y0K3S3

Llamar addon a Nhibernate del .NET es como llamar a un video addon de una tele.

No es una simple dll de ASPMAIL...

Nhibernate te une a tecnologias como IoC y DI que implementan por ejemplo dentro de las tecnologias/soluciones del CastleProject.

Tanto el Nhibernate como el Castle son OpenSource y tiene una comunidad enorme detras.

Ahora reiros todo lo que querais y seguir usando ADO.Yo me quedo con mi IoC/Di (MicroKernel/Winsord.Contair) y mvc (Monorail).

kas

Pero menudas perlas soltais algunos:

#21 "no conozco esas librerias pero si están desarrolladas para C++ no se van a poder importar en C#"

Vaya por dios y yo que he tenido que desarrollar una libreria en C++ par ausarla desde C#.. como lo habre hecho?... solo he tenido que usar p/Invoke.

El que quiera desarrollar con C# que no se olvide de utiliazr ReSharper o se va a morir del asco.

C# / VB .NET para aplicaciones de escritorio windows.

C++ para aplicaciones de mucho gasto de recursos o que necesitan una gestion muy controlada de la memoria.

Java para applets web.

Nota: Los juegos para Xbox360 se desarrollan en <spoiler>C#</spoiler>, con un compilador diferente al tradicional. Deveriais provar las XNA.

Y0K3S3

#26

Aun asi la peña dice que el Vb.Net es la polla en vinagre.

pd: Yo me pase del vb.net al c# por algo.

kas

A ver, yo también he acabado pasándome a C#, pero antes estuve 3 años en VB .NET y la verdad es que podía hacer las mismas cosas, jamas me encontré con el problema de decir: mierda esto en VB .NET no se puede hacer.

Me he pasado a C# por el trabajo y me ha gustado más, aunque siempre se ha dicho que con VB el desarrollo era mas ágil, he conseguido aumentar mi productividad ya que me he amoldado mejor a C# (cosa bastante rara porque siempre he odiado los ; finales de los lenguajes y que me diga que no compila porque he puesto If en vez d if xDDD)

PD: Sin ReSharper jamás me hubiera pasado a C#.

Soltrac

#26 No se, si tu puedes llamar con pinvoke una libreria q utilicé en el proyecto de fin de carrera para Borland C++ para utilizarla en Visual C# ole tus cojones, yo no soy capaz ^. Pero bueno q a lo mejor se puede, cosa q dudo pq es mezclar churras con meninas, pero yo tenia entendido q Pinvoke se utilizaba para llamar a dlls de API de windows.

Ah, y me parece una locura recomendar Addons de pago para programar, entre otras cosas porque no todas las empresas os van a dar el gusto de poneros las licencias q necesitais, al menos yo le digo a mi jefe q me de dinero para comprar una licencia de resharper y se parte en mi cara XDD.

#27 Nadie dice q VB.NET es la polla en vinagre, solo digo q es lo mismo q C# con sintaxis de VB, en vez de con sintaxis de C. Yo al menos lo utilizo indistintamente y jamás he tenido problemas.

Por cierto, paso de seguir con este off topic del post.

kas

Pues con tu dll no se, pero yo abrí el visual studio, cree un proyecto de C++, hice una librería, la compile, la añadí como archivo a un proyecto en C#, force que se copiara siempre en el directorio de destino de compilación y con p/Invoke la utilizaba.

A ti te apreciaran una chorrada, pero vamos pregunta donde quieras la diferencia entre programar en C# puro en VS y programarlo con ReSharper.

PD: Yo en el trabajo utilizo una licencia de la universidad y en casa una copia de seguridad de una que tuve una vez...