作者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