做Wince项目时遇到的问题,
将相机拍摄的图像从SD卡读入BitMap,然后在克隆给PictureBox;即:Bitmap bmp=new Bitmap(FilePath); Picture.Image=(Image)bmp.Clone();bmp.Dispose();查看前2张图片没有问题,第3张图片时就报内存溢出了.
尝试了多种释放资源的方式,包括GC强制回收都没有效果,后来看到别人C++代码里面对BitMap位图操作时,采用DeleteObject进行释放的。我也在C#里进行了尝试,还真释放干净了;记录这里备忘;
[DllImport(
"coredll.dll"
)]
[
return
: MarshalAs(UnmanagedType.Bool)]
public
static
extern
bool
DeleteObject(IntPtr hgdiobj);