c# - GDI+ LockBits()/UnLockBits() 异常

标签 c# bitmap gdi+

我的程序是用 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/

相关文章:

c# - 我可以在 Linux 上为 .NET Core (C#) 运行 SonarQube 代码分析吗?

C# 从 MP4 流中提取位图

c - BMP 宽度/高度尺寸超过 255?

c# - GDI+:将所有像素设置为给定颜色,同时保留现有的 alpha 值

c# - 从几个重叠的 png 中创建一个 jpeg

c# - 滚动时如何消除Windows.Forms自定义控件中的闪烁?

c# - 拖放小部件代码

c# - 从数据表导出到 excel 时,如何阻止前导 0 被剥离?

javascript - 在主线程上创建Imagebitmap?

C 位图 : rotation and zoom