我已經瀏覽了幾頁類似的查詢,實現了大部分建議,但似乎無法找到迄今爲止工作的任何內容。希望我沒有忽略明顯的東西。C#Picturebox內存泄漏
對,所以我使用AForge.net捕捉圖像。它提供了一個事件,它觸發每個新幀接收,這在我的代碼如下所示:
private void videoSourcePlayer_NewFrame(object sender, ref Bitmap image)
{
framesRecieved++;
try
{
if (!stopCapturing)
{
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
}
pictureBox1.Image = image.Clone(new Rectangle(0, 0, image.Width, image.Height), image.PixelFormat);
}
}
catch { }
finally { GC.Collect(); }
}
內存使用情況非常穩定,只要窗口保持靜止,但只要我抓住窗口形式並開始移動它,內存使用量不斷增加。我之所以被認爲可能與picturebox有關,是因爲只要我將「stopCapturing」布爾變爲true,即使我在屏幕上移動窗口,內存也會停止上升。 「stopCapturing」不用於其他任何事情,並且事件繼續正常觸發,唯一的區別是正在顯示在圖片框中的圖像。我對這個原因感到茫然,所以任何幫助將不勝感激。
PS:不確定它是否相關,但我的工作站有2個屏幕。
首先刪除空捕獲和GC.Collect。 – 2013-03-21 10:01:34
不確定是否需要克隆。我以前使用過'新的位圖(圖片)'沒有問題。 – 2013-03-21 12:52:08