内存处理imagelist,内存不足

时间:2013-06-22 13:04:17

标签: c# listview memory-management imagelist

我在这里遇到了一个真正头痛的问题。

我有一个小程序,它显示存储在磁盘上的一些图像。一次在列表视图中显示8个图像,但是当图像足够大时,内存使用(根据任务管理器)达到1300mb以上!我怀疑有一些图像或某些东西没有被解除分配,但我似乎无法准确指出其中的位置。我已经尝试在listview.largeimagelist.images中处理所有图像,尝试清除()图像列表,但它根本没有任何区别。

以下是当前代码:

    private void btnLoadNewImages_Click(object sender, EventArgs e)
    {

        int k = lsvImgResult.Items.Count;
        for (k = lsvImgResult.Items.Count; k >= 1; k--)
        {
            Seen.Push((MyFile)lsvImgResult.Items[k - 1].Tag);
            imageList.Images.Clear();
        }


        int i = 0;

        lsvImgResult.Items.Clear();
        DisplayedImages.Clear();
        imageList.Images.Clear();

        imageList.ImageSize = new Size(100, 100);
        imageList.ColorDepth = ColorDepth.Depth32Bit;

        int HowMany = 0;
        if (UnSeen.Count >= 8)
        {
            HowMany = 8;
        }
        else
        {
            HowMany = UnSeen.Count;
        }

        for (i = 1; i <= HowMany; i++)
        {
            MyFile CurFile = UnSeen.Pop();
            Image j = Image.FromFile(CurFile.Filename);
            DisplayedImages.Enqueue(CurFile);
            imageList.Images.Add(j);
        }

        lsvImgResult.LargeImageList = imageList;
        for (int j = 0; j < imageList.Images.Count; j++)
        {
            ListViewItem lstItem = new ListViewItem();
            lstItem.ImageIndex = j;
            lstItem.Tag = DisplayedImages.Dequeue();
            lstItem.ToolTipText = ((MyFile)lstItem.Tag).Filename;
            lsvImgResult.Items.Add(lstItem);
        }

        tabImagesLeft.Text = "Images left: " + UnSeen.Count;
    }

0 个答案:

没有答案