Visual Basic.NET - Problema

   
Vista:

Problema

Publicado por Rafa (4 intervenciones) el 26/03/2008 12:09:40
Hola buenas, tengo un problema muy grande resuta que he hecho una programa que coge un monton de imagenes del tamaño que sean y las hace aun tamaño determinado.
Mi problema es que empieza a comerse toda la memoria ram y si hay mas de 300 imagenes da un error de out of memory.
Cada vez que cambio una de tamañano creo que me cargo todo lo que utilizo con dispose y ademas despues le meto un gc.collect pero ni con esas.
Tienen alguna idea.
Muchas gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema

Publicado por Rafa (4 intervenciones) el 26/03/2008 13:08:47
Si el equipo tiene 2 gb pero aun asi se lo merienda todo, necesito liberar memoria pero del todo sin que se la guarde.
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema

Publicado por P. J. (706 intervenciones) el 26/03/2008 15:36:24
Cambia de tamaño a las 300 imagenes (con un bucle) ???

Si usas un bucle, al final pusiste un Aplication.doevents ?

Seguro y tienes codigo demás

No se pero capaz viendo el código se te pueda ayudar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema

Publicado por Rafa (4 intervenciones) el 26/03/2008 17:00:46
Gracias por la respuesta, no he puesto nada de aplication.doevents

El codigo en cuestion es este:
For i As Integer = 0 To Fotos.Length - 1
Imagen = New Bitmap(Fotos(i).FullName)


Imagen = New Bitmap(Imagen, New Size(520, 390))

Imagen.Save(Me.Directorio.Text & Contador.ToString & ".jpg", ici, eps520)
Imagen = New Bitmap(Imagen, New Size(160, 120))
Imagen.Save(Me.Directorio.Text & Contador.ToString & ".jpg", ici, eps160)
Contador = Contador + 1

Imagen = Nothing

Imagen.Dispose()
GC.Collect()
MyBase.Dispose()
ClearMemory()
System.Diagnostics.Process.Start(Me.Directorio.Text & "liberar.vbs")
Catch ex As Exception

End Try
End If


Next
A ver si alguien ve algo que estoy perdido por cierto liberar es un fichero que he creado que contiene una cosa que he visto por ahi para liberar memoria, pero no va.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema

Publicado por P. J. (706 intervenciones) el 26/03/2008 17:28:17
Pero quita todo eso, no es necesario que estes libera y libera, capaz eso sobrecarga tu ram.

Sabes que al usar programa que libera ram, no se libera del todo asi de rapido y mas que tienes esto en un bucle pues....

No se pero y si quitas todo este bloque:
'------------------------------------------
Imagen = Nothing

Imagen.Dispose()
GC.Collect()
MyBase.Dispose()
ClearMemory()
System.Diagnostics.Process.Start(Me.Directorio.Text & "liberar.vbs")
'------------------------------------------

y pon application.doEvents().
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema

Publicado por Rafa (4 intervenciones) el 26/03/2008 18:05:15
Muchas gracias P.J. con el aplication al principio se merienda la memoria pero luego la suelta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar