Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF字形控制字体uri!(它的速度很慢,并保留在内存中)_C#_Wpf_Memory Leaks_Fonts_Uri - Fatal编程技术网

C# WPF字形控制字体uri!(它的速度很慢,并保留在内存中)

C# WPF字形控制字体uri!(它的速度很慢,并保留在内存中),c#,wpf,memory-leaks,fonts,uri,C#,Wpf,Memory Leaks,Fonts,Uri,我正在制作一个类似datagrid的控件,它有很多行和列。问题是加载时间,使用glyphs而不是textblock解决了这个问题 现在的问题是,当我从应用程序包中给它一种字体时,它会变慢并保留在内存中,每次控件重新加载时,它都会变慢并消耗更多内存: Glyphs glyph = new Glyphs() { FlowDirection = FlowDirection.LeftToRight, Unic

我正在制作一个类似datagrid的控件,它有很多行和列。问题是加载时间,使用glyphs而不是textblock解决了这个问题

现在的问题是,当我从应用程序包中给它一种字体时,它会变慢并保留在内存中,每次控件重新加载时,它都会变慢并消耗更多内存:

        Glyphs glyph = new Glyphs()
        {
                FlowDirection = FlowDirection.LeftToRight,
                UnicodeString = "text",
                FontUri = fnt,
                FontRenderingEmSize = 15,
                Fill = Brushes.Black,
                HorizontalAlignment = HorizontalAlignment.Center
        };
现在问题的起因是:

 Uri fnt = new Uri("pack://application:,,,/myapp;component/Fonts/times.ttf");
如果我这样做,一切都会好起来:

 Uri fnt = new Uri(@"C:\Windows\Fonts\times.ttf");

但我将使用一种其他系统上不存在的字体,它需要与我的应用程序一起使用。

这实际上与此处的问题相同,并且不会在任何时候修复:

WPF团队最近已经审查了这个问题,并且将不会解决这个问题,因为此时团队正在关注影响最多WPF开发人员的bug。如果您认为这是错误解决的,请使用任何必要的支持详细信息重新激活此错误

我们感谢您的反馈。然而,这个问题将不会在WPF的下一个版本中解决。非常感谢。 –WPF团队

由于这两种情况都是由UnmanagedMemoryStreams造成的,所以现在您只能创建临时文件夹并将字体保存到其中。这并不漂亮,但这就是我们所拥有的一切