none
释放Image.Source RRS feed

  • 问题

  • 如题,我的工程中需要做一个类似任务管理器的界面,需要每个n分钟去重绘图像,我发现时间久了,占用的内存越来越大(大概每次刷新图像,内存增加1-2M不等),究其原因是老的Image.Source没有释放掉,代码如下,那么应该在什么地方添加释放Image.Source的代码呢?

     public void LoadCurrentChart()
        {
            //ChartImage是Image控件的名字
            ChartImage.Source = null;
    
            using (Bitmap bitmap = new Bitmap(width, height))
            {
                using (Graphics graphics = Graphics.FromImage(bitmap))
                {
                    //清空图像
                    graphics.Clear(Color.White);
    
                    //绘制图像(示意)
                    graphics.FillRectangle(Brushes.White, 0, 0, width, height);
                    graphics.FillRectangle(Brushes.Red, 0, 0, width, height);
    
                    //转换图像
                    IntPtr hBitmap = bitmap.GetHbitmap();
                    System.Windows.Media.ImageSource imagesource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                        hBitmap, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
    
                    //赋值
                    ChartImage.Source = imagesource;
                }
            }
        }

    2014年12月29日 8:16

答案