日期:2014-05-20 浏览次数:21150 次
public partial class Form2 : Form
{
ArrayList filer = new ArrayList();
int sss = 0;
public Form2()
{
InitializeComponent();
}
using S
------解决方案--------------------
原来是 图片太大。 呵呵。
其实,即使你用了dispose。 垃圾回收也不是马上就回收的。
所以,当你的刷新频率太快,如果图片本身也比较大。那在垃圾回收之前就内存不足就很正常了。
如果,在每次代码的最后,加上GC。collect();强制回收。不知道能不能行。因为看资料写的是强制回收会影响程序性能。何况你这刷新频率这么高!
一个是导致cpu高负载,一个内存高使用量。 楼主自己测下吧。
------解决方案--------------------
从文件读出的Image,需要先画到另一个Image中然后Dispose。参考代码:
Image gt = Image.FromFile(fd.FileName);
using (Image tmpImag = new Bitmap(gt.Width, gt.Height))
{
using (Graphics tmpG = Graphics.FromImage(tmpImag))
{
tmpG.DrawImage(gt, 0, 0, gt.Width, gt.Height);
}
using (Graphics g = this.CreateGraphics())
{
g.DrawImage(gt, 0, 0, this.Size.Width, this.Size.Height);
}
}
gt.Dispose();