WPF中Image控件不释放内存

问题描述

使用Image控件和button控件,每次按一下button载入一张新图片,就是不断修改Image控件的source。但是程序占的内存越来越多,似乎Image控件显示之前的图片所占的资源并没有被释放掉。类似的问题也在这里http://zhidao.baidu.com/link?url=DDjQpz5Un0IXGeF34N2LBWv10L7f1z5hpOdX980_LtPSZk6eCovyD3ZqXQL7Fkl8L5Ve2DDVaAmcyyEB-OKWjq

解决方案

解决方案二:
参见:
解决方案三:
引用楼主chasel_的回复:

使用Image控件和button控件,每次按一下button载入一张新图片,就是不断修改Image控件的source。但是程序占的内存越来越多,似乎Image控件显示之前的图片所占的资源并没有被释放掉。

一个对像有没有被释放,你可以使用“弱引用”技术来测试。不要靠瞎猜,应该写测试程序。贴出你的测试程序来证明你的说法!
解决方案四:
引用2楼sp1234的回复:

Quote: 引用楼主chasel_的回复:
使用Image控件和button控件,每次按一下button载入一张新图片,就是不断修改Image控件的source。但是程序占的内存越来越多,似乎Image控件显示之前的图片所占的资源并没有被释放掉。

一个对像有没有被释放,你可以使用“弱引用”技术来测试。不要靠瞎猜,应该写测试程序。贴出你的测试程序来证明你的说法!

请问大神,如何写测试程序,或者给指条路我去自学,这个一看到XX测试XX测试就很蛋疼,一直想学就是不知道如何去学习,求指点
解决方案五:
改用Binding和INotifyPropertyChanged<ImageSource="{Bindingimg}"></Image>

classTestImage:INotifyPropertyChanged{publiceventPropertyChangedEventHandlerPropertyChanged;publicstringName{//当点击按钮的时候就在这里更改image的source}

解决方案六:
写错了,改一下classTestImage:INotifyPropertyChanged{publiceventPropertyChangedEventHandlerPropertyChanged;publicBitmapImageimg{//当点击按钮的时候就在这里更改image的source}}

时间: 2024-10-30 03:28:22

WPF中Image控件不释放内存的相关文章

wpf中添加控件怎么不显示

问题描述 wpf中添加控件怎么不显示 新人求指导,代码如下,TextBlock和Button不显示 <Window x:Class="计算器界面.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="计算器&

wpf 中 image控件中的bitmapsource/bitmapimage大小变化?

问题描述 wpf中image控件中的bitmapsource/bitmapimage大小一直都不变,怎么让其改变啊,急 解决方案 解决方案二:<DataGridTemplateColumn.CellTemplate><DataTemplate><ImageMouseLeftButtonDown="Image_MouseLeftButtonDown_1"Tag="{BindingFid,UpdateSourceTrigger=PropertyCha

WPF中TreeView控件在选中节点后如何获取其父节点,再父节点信息

问题描述 winform中TreeView控件中,在选中某个节点后,可以用e.Node.Parent来获取其父节点信息,再父节点可以用e.Node.Parent.Parent,而在WPF中此方法似乎不行,如,在选中某个节点后TreeViewItemitem=(TreeViewItem)treeCourseInfo.SelectedItem;可以获取该节点的信息if(item.Header.ToString()=="科目信息",但是不知该如何获取其父节点,再父节点.....信息,各位有谁

WPF中image控件鼠标事件

问题描述 我在WPF的窗口中添加了一个image控件,然后想通过该控件的MouseDown事件来捕捉鼠标的位置,可是添加了事件的处理程序后,该事件怎么都不响应,下面是xaml和cs中的代码<Windowx:Class="TrackingForms.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.mic

WPF中TabControl控件标签 可以隐藏吗或者去掉

问题描述 解决方案 解决方案二:控件的Visibility控件的设置即可代码或xaml里设置均可me.tabItem2.Visibility=System.Windows.Visibility.Hidden解决方案三:隐藏掉?那你为什么用这个控件?解决方案四:使用Items.Remove

WPF中TextBox控件对于鼠标单击获取焦点后的全选

程序代码  代码如下 复制代码 void OnLostFocus(object sender, RoutedEventArgs e)          {              TextBox tb = e.Source as TextBox;              tb.PreviewMouseDown += new MouseButtonEventHandler(OnPreviewMouseDown);          }            void OnPreviewMous

style-.net framework 4.0中WPF的checkbox控件的三种状态样式变更

问题描述 .net framework 4.0中WPF的checkbox控件的三种状态样式变更 当前使用.Net Framework 4.0 WPF开发一个界面,需要使用CheckBox的控件的isThreeState= true ,设置为三种状态,分别是未点击时白框,单击时显示对勾,再单击时显示中间一个小蓝框.分别对应checked值为false, true和 null. 我需要的是,如何装饰checked值为null时,其显示效果由蓝色框更换为一个红色叉的效果. 谢谢.

WPF:ScrollViewer中的控件不触发TouchUp事件

问题描述 WPF中ScrollViewer中的控件不触发TouchUp事件,移除ScrollViewer后一切正常.如果这个问题解决不了,那还有什么方法可以产生类似ScrollViewer的效果. 解决方案

在WPF的WebBrowser控件中抑制脚本错误

原文:在WPF的WebBrowser控件中抑制脚本错误 今天用WPF的WebBrowser控件的时候,发现其竟然没有ScriptErrorsSuppressed属性,导致其到处乱弹脚本错误的对话框,在MSDN上找到了如下解决方案:  1 static void SuppressScriptErrors(WebBrowser webBrowser, bool hide) 2 { 3     webBrowser.Navigating += (s, e) => 4         { 5