当我在mono3.2.3 c#中使用PrivateFontCollection.Dispose()时,为什么应用程序崩溃?

时间:2014-03-21 13:47:30

标签: c# fonts mono system.drawing privatefontcollection

我正在 C#中编写一个库,允许我将HTML转换为PDF 。显然这个想法是它是跨平台的,为什么我用单声道做。为此,我必须使用System.Drawing.Text.PrivateFontCollection类加载Seller字体。

当应用程序完成所有代码的执行时,应用程序意外退出。经过多次测试后,我意识到问题出在调用 Dispose方法System.Drawing.Text.PrivateFontCollection或调用Dispose()的{​​{1}}时。

此问题出在 Windows (我有Windows 7 32位), linux我没问题

这是测试代码

System.Drawing.FontFamily

1 个答案:

答案 0 :(得分:0)

总是致电Dispose

使用非托管资源时,您需要始终致电Dispose

调用Dispose的另一种方法是使用using关键字...

示例(在运行此操作之前,请在您的电脑上重新启动以确保已释放所有资源):

using System;
using System.Drawing.Text;
using System.IO;
using System.Runtime.InteropServices;
using System.Drawing;

namespace FORM
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            using (PrivateFontCollection pf = new PrivateFontCollection())
            {
                IntPtr fontBuffer = IntPtr.Zero;
                pf.AddFontFile("C:\\Windows\\Fonts\\times.ttf");

                Font f = new Font(pf.Families[0], 12, FontStyle.Regular);
            }

            Console.WriteLine("Hello World!");
            Console.ReadLine();
        }
    }
}