使用Font时WPF TextBlock内存泄漏

我在Windows 7上使用.NET 4.5,可能会发现内存泄漏。
我有一个TextBlock (不是TextBox – 它不是Undo问题),它每秒都会改变它的值(CPU使用率,时间等……)。
使用.NET Memory Profiler (通过简单地观察任务管理器)我注意到内存不断增长。 为了更准确,我看到越来越多的UnmanagedMemoryStream实时实例(我尝试了GC.Collect()显然没有做任何事情)。

经过一些测试后,我发现只有当我将TextBlock字体设置为资源字体时,才会出现此问题,如下所示:

     

我尝试直接从代码或通过Binding更新Text属性,它对两种方式都表现相同。

底线:
设置FontFamily ,每次我更新文本时, UnmanagedMemoryStream实例都会继续(永远)。 当我没有(设置FontFamily属性)时,内存是稳定的。
(顺便说一下,当我使用Label而不是TextBlock时会发生这种情况)

它看起来像是内存泄漏,但我找不到任何关于它的参考。
有关如何解决的任何建议?

如果FontFamily是从嵌入式资源或相对路径获取的,则在使用时会泄漏UnmanagedMemoryStreams 。 当FontFamily来自系统字体或绝对路径时,它不会泄漏。

您可以在此处查看并下载重现问题的项目。

解决方法 :对于资源字体:将字体保存到临时文件夹中,并使用存储字体的绝对路径。 对于相对路径字体:改为解析并使用绝对路径。