c# - ImageSlider内存泄漏c#

标签 c#

我在我创建的程序中使用了这样的代码,但我有一个 ram 内存的小问题,它不断增加并且占用了所有 ram。所以每次它改变图像时,内存都会增加。我想做的是处理以前的图像,这样我就不会限制内存。或者,如果有更好的方法来创建带有计时器的幻灯片放映,而不会限制内存,请为我指明正确的方向。谢谢。

private string [] folderFile = null;
private int selected = 0;
private int begin = 0; 
private int end = 0;


private void showImage(string path)
 {
   Image imgtemp = Image.FromFile(path);
   pictureBox1.Image = imgtemp;
 }

private void nextImage()
{
  if(selected == folderFile.Length - 1)
{
  selected = 0;
  showImage(folderFile[selected]);
}
else
{
 selected = selected + 1; 
 showImage(folderFile[selected]);
}
}

 private void timer1_Tick(object sender, System.EventArgs e)
 {
   nextImage();
 }

最佳答案

您需要处理之前的图像。

private void showImage(string path)
{
   Image oldImage = pictureBox1.Image;
   Image imgtemp = Image.FromFile(path);
   pictureBox1.Image = imgtemp;
   if(oldImage != null)
       oldImage.Dispose();
}

关于c# - ImageSlider内存泄漏c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37957517/

相关文章:

c# - 在写入/读取 c# mongodb 时加密/解密属性

c# - SecurityTokenInvalidAudienceException : IDX10214: Audience validation failed

c# - 无法在 Telerik 中使用附加 Y 轴的绑定(bind)

c# - SQL LIKE 语句或 C# foreach 检查?

c# - 如何获取 Facebook 应用程序的当前在线用户列表?

c# - 代码中特定行的目的是什么

c# - 使用 MVVM 的 wpf 中的案例约定

c# - 将图像加载到可写位图中

c# - PreRender 上的绑定(bind)控件

c# - 更改 xamarin 表单 pcl 目标