- 原因:Winform的窗体中显示9个Picturebox控件,由于更新速度较快偶尔会"参数无效"的异常。异常图像如下:
- 通过测试知:1,注释PictureBox.Image.Dispose(),不会报异常;2,注释PictureBox.Image=null,还是会报异常!
- 选择释放的原因:由于刷新图像较快内存占用较大,所以选择主动用Dispose(),=null方法使GC回收内存垃圾。
- 解决方法:通过Debug知,公共的bitmap和PictureBox.Image指向的内存地址一样,当用tempBmp接收传进来的bmp图像时,此时PictureboxImage
的对象已是最先图像。当PictureBox.Image释放内存后,公共变量tempBmp内存业已释放,再次赋值时会报错。把tempBmp=bmp这句放在释放内存后,解决问题。