OutOfMemoryException cargando una imagen grande a un objeto Bitmap con el Marco Compacto

Tengo un problema con una pérdida de memoria.

Tengo este codigo en unbutton_click :

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

    Dim ms As New IO.MemoryStream
    Dim bm As New Bitmap("\Application Data\imgs\IMG22.jpg")
    bm.Save(ms, Drawing.Imaging.ImageFormat.Jpeg)
End Sub

Este código funciona bien cuando ejecuto el .exe en mi computadora portátil (me refiero a windows7 / 32bits con el completo marco .net) pero cuando ejecuto la aplicación en un dispositivo con WindowsMobile 6.1, la aplicación lanza esta excepción:

SmartDeviceProject22.exe
OutOfMemoryException

a

Microsoft.AGL.Common.MISC.HandleAr(PAL_ERROR ar)
at
System.Drawing.Image.Save(Stream stream, ImageFormat format)
at
SmartDeviceProject22.Form1.Button3_Click(Object sender, EventArgs e)
at
....

El tamaño de la imagen es de alrededor de 200kb y el ancho y la altura alrededor de 1500px. Detalles de la imagen:

Dimensión: 1536x2048Resolución horizontal: 72dpiResolución horizontal: 72dpiProfundidad de bits: 24Unidad de resolución: 2Representación del color: sRGB -

Cualquier ayuda será muy apreciada.

Intento con el código de @asawyer, incluso elimino TODO el código, la referencia, etc., y el problema se mantiene, supongo que tiene algo que ver con el ancho / alto de la imagen o con el marco compacto.

¿Algún otro consejo?

Solución y explicación del problema. Bueno, después de algunas pruebas, el problema real no era una pérdida de memoria, como lo dijo @pdriegen, es un problema de memoria disponible.

Cambié mi código a esto (y lo probé en el dispositivo móvil):

 Dim fs As IO.FileStream = IO.File.OpenRead("\Application Data\ryder\IMG23.jpg")
 Dim arrb(fs.Length) As Byte     
 fs.Read(arrb, 0, arrb.Length)
 fs.Close()
 fs.Dispose()

Y con el código anterior (aparentemente) obtengo un byte () (matriz) de la imagen para almacenar en la base de datos utilizando dataSet.

En conclusión: cargar un objeto de mapa de bits en memoryStream, mala idea. Muchas gracias a todos los que se toman su tiempo para leer mi problema, y ​​especialmente a los que publican su respuesta.

Solución (si necesita mostrar la imagen en un cuadro de imagen):

Después de algunas semanas, esta es probablemente la mejor solución (gratis): implemente un ImageHelper como se explica aquí:ImageHelper

Esta clase / muestra utiliza el NameSpace de dibujo de OpenNetCF (http://www.opennetcf.com/)

Funciona muy bien y resuelve mis problemas de memoria al cargar grandes mapas de bits en la memoria, en realidad cargamos una miniatura, por lo que el tamaño en la memoria se reduce considerablemente y evita el problema de excepción de OutOfMemory.

Acerca de Chris Tacke Me acabo de dar cuenta de que el autor de la publicación sobre ImageHelper y cofundador de OpenNetCF está aquí en stackoverflow, aquí está su perfil:https://stackoverflow.com/users/13154/ctacke

Respuestas a la pregunta(2)

Su respuesta a la pregunta