https://www.jianshu.com/p/7e9ecb383bd0
我们经常会在程序中使用DispatcherTimer,但是如果一不小心就会发生内存泄漏,请看下面的Demo:
内存泄漏代码
我创建了一个简单的窗口Example1.xaml:
<Window x:Class="MemoryLeak.Example.Example1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Window>
Example1.xaml.cs中的代码如下:
public partial class Example1 : Window
{
//这里产生一个大的内存占用,约50MB,用于在任务管理器看到这个窗口Show出来以后,进程内存占用剧增的现象
private readonly List<string> _bigList = ExampleHelper.BigList();
public Example1()
{
InitializeComponent();
DispatcherTimer timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1) };
timer.Tick += Timer_Tick;
timer.Start();
}
private void Timer_Tick