gpt4 book ai didi

c# - 跨类库传递 System.Drawing.Bitmap 不可靠吗?

转载 作者:太空狗 更新时间:2023-10-29 23:04:22 26 4
gpt4 key购买 nike

我有一个生成位图并发回其引用的第 3 方 dll。如果我立即从中生成一个 System.Windows.Media.Imaging.BitmapSource,那么一切都会顺利进行。但是如果我保存引用并稍后(在几秒钟和许多函数调用之后)我尝试生成 Bitmapsource,我得到

System.AccessViolationException was unhandled by user code
Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt. Source="System.Drawing"

做的时候:

System.Windows.Media.Imaging.BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
bmp.GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());

这里有什么问题的线索吗?任何指针都会有用。谢谢。

最佳答案

我认为这表明 bmp.GetHBitmap 返回的句柄(对操作系统管理的资源的引用,而不是 .Net)不再有效 - 可能在某处调用了 Dispose或类似的东西(但不一定由您的代码)。

我建议使用另一种不依赖于句柄的持久化位图数据的方法——可能会立即流出位图本身的二进制数据,然后抛出对它的引用。

关于c# - 跨类库传递 System.Drawing.Bitmap 不可靠吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2433481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com