我正在編寫一個播放幻燈片(除其他外)的程序。幻燈片由backgroundWorker控制,並設置爲while(true)循環,因此它會不斷播放圖像。我的問題是我不知道如何處理舊圖像,以便它們不佔用內存(稍後,程序會拋出「內存不足異常」)。如果我調用horPicBox.Image.Dispose(),那麼它在這之後不會讓我使用pictureBox處理一個pictureBox圖像而不會丟失圖片盒
有沒有辦法從內存中釋放舊圖像?如果我看看VS中的診斷工具,每次圖像更改時內存都會上升。 ..
注:ImagePaths是文件路徑爲幻燈片圖像列表
這是BackgroundWorker的運行代碼:
private void PlayImages()
{
Random r = new Random();
int index;
Stopwatch watch = new Stopwatch();
while (true)
{
index = r.Next(imagePaths.Count);
horPicBox.Image = Image.FromFile(imagePaths[index]);
watch.Start();
while (watch.ElapsedMilliseconds < 5000)
{
}
watch.Stop();
watch.Reset();
//picWorker.ReportProgress(0);
}
}
我可以向UI線程報告progressChanged,但我不知道我需要從UI線程(如果有的話)中釋放舊圖像。提前致謝!!
*如果我叫horPicBox.Image.Dispose(),那麼它不會讓我用圖片框在所有後*什麼,這對誰發送一個保鏢如果你嘗試了,你會覺得粗糙嗎? – Will