每当用户单击下一个图像时,我都有一个缓存来存储最近的两个图像,“RemoveAt(x)”是否放置了x图像,或者我想要的是删除的图像不在内存中。被完全删除。

 List<Image> BackimageList = new List<Image>();

 private void BackimageListCache(Image img)
{
  BackimageList.Add(img);
  if (BackimageList.Count > 2)
   {
    BackimageList.RemoveAt(0); //oldest image has index 0
   }
}

最佳答案

.NET中的集合不“拥有”一个对象。因此,他们不能假定该对象未在其他任何地方使用,因此无法处置该对象。所有权规则完全由您自己执行。这确实意味着您还必须确保图像没有显示在PictureBox中。

确保图像不再占用任何内存也很困难。您无法自己管理内存,这是垃圾收集器的工作。但是,Image使用相当大量的非托管内存来存储像素数据,当您调用Dispose()时,该内存确实会释放。 Image的受管部分将保留在内存中,直到GC到达它为止。很小

关于c# - RemoveAt(x);它是否放置元素x?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16181693/

10-09 04:58