做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);