WPF中使用TextBox 存在内存泄露的可能

原创 2015年07月09日 09:17:23

TextBox存在内存泄露的可能

背景

-WPF桌面程序中,增加了一个TextBox控件,用于显示输出的日志信息,日志信息量很大(具体数值未统计)

XAML 代码
 <TextBox Text="{Binding Message}" TextWrapping="Wrap" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" TextChanged="TextBox_TextChanged" />

CS 代码
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        if (!(sender is TextBox)) return;
        var tb = (TextBox)sender;
        if (tb.Text.Length > 30000) //textbox maxlength = 32767
      {
        tb.Text = "Auto Clear Histroy Information\n\r";
      }
       tb.Select(tb.Text.Length, 0);
    }

问题

运行一段时间后操作系统弹出信息,称“XXX程序出问题了”(截图后补吧)。在增加日志显示功能前,此异常未出现。

解决

参考:Google搜索到的信息
怀疑是日志信息太多,造成程序内存泄露。TextBox控件支持回退功能(Undo),但是回退功能需要占用更多内存。

 设置 
     UndoLimit="0"  或者 IsUndoEnabled="False"
 可关闭Undo功能

注: 还需进行更多的测试,已验证此结论

版权声明:本文为博主原创文章,未经博主允许不得转载。

WPF 4.0 中关于 AutomationPeer引起的内存泄露问题(AutomationPeer Memory Leak)

最近在做一个基于WPF 4.0 的公司产品框架测试的时候,发现了一个非常奇怪的内存泄露问题。   基本现象是这样的,当我离开某一个页面的时候,发现内存不会被释放,这样来来往往几十次之后,发现程序会...

Android 使用LeakCanary 检测内存泄露

  • 2015年08月26日 10:05
  • 2.72MB
  • 下载

使用Handler可能导致的内存泄露

在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用。通常我们的代码会这样实现。public class SampleActivity extends Activity ...

libevent使用点滴(1)使用libevent调用evthread_use_pthreads的一个可能的内存泄露

使用libevent时为了保证线程安全,提供了evthread_use_pthreads函数 他的内部是会分配内存的,但是没有对应的函数来反释放evthread_use_pthreads分配的内存,那...

WPF WPF中解决内存泄露的几点提示与解决方法

http://www.cnblogs.com/LastPropose/archive/2011/08/01/2124359.html 一直以来用WPF做一个项目,但是开发中途发现内存开销太大,用AN...
  • swarb
  • swarb
  • 2014年04月18日 17:02
  • 9859

WPF:警惕TextBox会占用过多内存

问题源自这篇文章:WPF的TextBox产生内存泄露的情况。 整个问题是这样的,文章作者演示使用类似下方的代码来不停地像WPF的TextBox控件赋值: for (int i = 0; i < 1...
  • X___V
  • X___V
  • 2013年03月24日 13:57
  • 663

Android 内存泄露

  • 2015年03月13日 11:52
  • 77KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF中使用TextBox 存在内存泄露的可能
举报原因:
原因补充:

(最多只允许输入30个字)