- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的程序是用 C# 编写的,在低级别上使用位图进行操作。一切正常,但有时(很少见,但稳定)出现“通用 GDI+ 异常”异常,并且很难重现这种情况。
函数 LockBits() 和 UnLockBits() 发生异常。它包含错误代码“-2147467259”。在 GDI+ 的语言中,它将是 GdipBitmapLockBits 方法并返回代码 7 或 1。
什么样的原因会造成这种情况?
非常感谢任何答案。
最佳答案
GDI+ 对象不是线程安全的,在没有同步的情况下从多个线程使用它们肯定会导致崩溃。为了完整起见,我想补充一点,在释放位图之前释放支持 GDI+ 位图的内存是可能的,在这种情况下,您在尝试使用位图时会得到无效访问。这只有在您自己分配像素数据并使用带有数据指针的构造函数时才会发生,例如这个:http://msdn.microsoft.com/en-us/library/zy1a2d14.aspx
关于c# - GDI+ LockBits()/UnLockBits() 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7996484/
用户选择图像的一部分进行剪切和粘贴操作。我创建了一个新位图,将所选部分粘贴到新图像中,删除源数组并将其粘贴回旧图像。有效,但至少有一半时间挂起并尝试读取或写入 protected 内存。这通常表明其他
我的程序是用 C# 编写的,在低级别上使用位图进行操作。一切正常,但有时(很少见,但稳定)出现“通用 GDI+ 异常”异常,并且很难重现这种情况。 函数 LockBits() 和 UnLockBits
Gdiplus::Bitmap::Lock/UnlockBits 总是复制数据吗?或者在某些情况下它可以将相关页面映射到我的进程的地址空间,从而为我提供零拷贝直接访问? 如果是,对参数的已知限制是什么
上下文: 我和我的同事通过 C# 处理位图图像。 目前,我们也在使用 AForge Framework用于管理图像,并且由于 AForge dll 的方法与 UnmanagedImage 一起使用类,
我正在调用一些使用 .NET 中的 BitmapData 类的代码。我遇到了一些在 Googlespace 上找不到明确答案的问题。 因为看起来 LockBits 和 UnlockBits 必须总是成
我是一名优秀的程序员,十分优秀!