Tengo un dll de terceros que genera un mapa de bits y devuelve su referencia. Si genero un System.Windows.Media.Imaging.BitmapSource inmediatamente, todo va bien. Pero si salvo la referencia y más tarde (después de unos segundos y muchas llamadas de función) Trato de generar el BitmapSource, consigo¿No es confiable pasar System.Drawing.Bitmap a través de las bibliotecas de clase?
System.AccessViolationException era no controlada por el código de usuario
Mensaje = Intento de leer o escriba memoria protegida. A menudo, esta es una indicación de que otra memoria está corrupta . Fuente = "System.Drawing"
cuando se hace:
System.Windows.Media.Imaging.BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
bmp.GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
Alguna pista sobre qué se está mal aquí? Cualquier puntero será útil. Gracias.
Lo sentimos, no tiene nada que ver con los identificadores de archivo. Ver la respuesta de Andras para la explicación correcta. Sin embargo, me gustó su solución para copiar un mapa de bits para evitar el error (+1). Si las estructuras internas de datos de mishal153 requieren un Mapa de bits en lugar de un BitmapSource, debería usar el código como el que publicó. De lo contrario, lo mejor sería crear el BitmapSource de forma inmediata en lugar de crear un nuevo mapa de bits. –
Hola Brandi, Tus sugerencias funcionan como una canción :). ¡Gracias! Intentaba hacer lo mismo, pero la forma en que lo hacía era: 'newBmp = oldBmp.Clone(); La documentación del clon decía "Crea una copia exacta de esta imagen", así que pensé que había hecho una copia profunda. Lo que es realmente confuso es que la documentación del constructor de Bitmap dice "Inicializa una nueva instancia de la clase Bitmap a partir de la imagen existente especificada", y eso suena como que simplemente envuelve la imagen existente, cuando de hecho está haciendo una profunda copia :) .Es solo yo o esto es confuso para otros también. gracias chicos – mishal153
Me alegro de haber ayudado. :) – Brandi