作者derekjitter (小王子)
看板C_Sharp
标题[问题] 连续播图片记忆体不足
时间Thu May 13 21:06:32 2010
我是利用一个timer去连续播图片 无限循环播放
如下:
private void timer1_Tick(object sender, EventArgs e)
{
switch (n % 4)
{
case 0:
pictureBox1.Image =
System.Drawing.Image.FromHbitmap(Resource1.pitcher0.GetHbitmap());
n += 1;
break;
case 1:
pictureBox1.Image =
System.Drawing.Image.FromHbitmap(Resource1.pitcher3.GetHbitmap());
n += 1;
break;
case 2:
pictureBox1.Image =
System.Drawing.Image.FromHbitmap(Resource1.pitcher4.GetHbitmap());
n += 1;
break;
case 3:
pictureBox1.Image =
System.Drawing.Image.FromHbitmap(Resource1.pitcher5.GetHbitmap());
n = 0;
break;
}
}
可是不知道为什麽 播一播就会crash
原因是记忆体不足
请问有什麽东西小弟没有考虑到吗
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.18.210
1F:推 evirtues:在timer_tick()之外先存switch内的四个Bitmap物件 05/13 21:35
2F:→ evirtues:你的写法只会不断new出新物件给pictureBox1.Image 05/13 21:35
3F:→ evirtues:记忆体可能来不及释放 05/13 21:36
4F:→ mortleo:你在 function 最後呼叫 GC.Collect() 出来洗地板看看。 05/13 23:19
5F:→ flamo:旧的Image Dispose掉试试看 05/13 23:27
6F:→ conanist:楼上正解 要懂的回收记忆体 05/14 14:40
7F:→ optimist9266:Bitmap好像是属於unmanage资源 05/14 16:21
8F:推 zhadow:呼叫 GetHbitmap後,要使用 GDIDeleteObject 才行. 05/16 06:11