首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

imageList增多图片时出现内存不足,求帮助

2013-02-04 
imageList增加图片时出现内存不足,求帮助!出错代码:************** 异常文本 **************System.OutOfM

imageList增加图片时出现内存不足,求帮助!
出错代码:
************** 异常文本 **************
System.OutOfMemoryException: 内存不足。
   在 System.Drawing.Graphics.CheckErrorStatus(Int32 status)
   在 System.Drawing.Graphics.DrawImage(Image image, Rectangle destRect, Int32 srcX, Int32 srcY, Int32 srcWidth, Int32 srcHeight, GraphicsUnit srcUnit, ImageAttributes imageAttrs, DrawImageAbort callback, IntPtr callbackData)
   在 System.Drawing.Bitmap.MakeTransparent(Color transparentColor)
   在 System.Windows.Forms.ImageList.CreateBitmap(Original original, Boolean& ownsBitmap)
   在 System.Windows.Forms.ImageList.ImageCollection.Add(Original original, ImageInfo imageInfo)
   在 System.Windows.Forms.ImageList.ImageCollection.Add(String key, Image image)
   在 Equn.KDDPrint.frmDownload.kd_ViewCompleted(Object sender, ViewCompletedEventArgs e)
   在 Equn.KDDPrint.KddService.kdd.OnViewOperationCompleted(Object arg)

在开发的机器上测试是正常的,测试好些台1G内存的电脑时出错。程序代码如下:


        void kd_ViewCompleted(object sender, ViewCompletedEventArgs e)
        {

            //清除原有项目
            listView1.Items.Clear();
            imageList1.Images.Clear();

            vTemplate[] vts = e.Result;

            StartIndex = (PageIndex - 1) * 4 + 1;
            EndIndex = StartIndex + vts.Length - 1;
            this.Text = "共有 " + TemplateCount.ToString() + " 个模板,当前第" + StartIndex.ToString() + "到" + EndIndex.ToString() + "个"+" - 模板下载";

            
            foreach (vTemplate vt in vts)
            {
                ListViewItem item = new ListViewItem();
                item.Text = vt.title;
                item.Tag = vt.id;
                item.ToolTipText = vt.id.ToString() + "号模板:" + vt.title;

                Image logo= StringToImage(vt.smallimg);
                
                imageList1.Images.Add("img" + vt.id.ToString(), logo);  //应该是这里出错了
                item.ImageKey = "img" + vt.id.ToString();


                logo.Dispose();

                listView1.Items.Add(item);

            }

            //更新按钮状态
            btnUpPage.Enabled = StartIndex > 1;
            btnNextPage.Enabled = EndIndex < TemplateCount;
            btnDown.Enabled = false;
        }



要如何解决啊? 求高手指点。
[解决办法]
奇怪的问题,没碰到过,帮顶
[解决办法]
好像是你的foreach循环重复加载了
[解决办法]
呵呵,多半是你的文件路径错了,你检查一下文件路径是否生成对了,
[解决办法]
有可能没及时释放图片资源造成的。
[解决办法]
还有原因是有可能多次重复图片了。你换用Properties.Resource里的图像 应该就不会这样了

热点排行