Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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# 使用StreamReader从文本文件中读取字体名称,可将cpu使用率提高一倍_C#_Performance - Fatal编程技术网

C# 使用StreamReader从文本文件中读取字体名称,可将cpu使用率提高一倍

C# 使用StreamReader从文本文件中读取字体名称,可将cpu使用率提高一倍,c#,performance,C#,Performance,我这里有这个代码,还有一个文本文件,里面有字体的名称。我试图做的是让用户选择他们想要的任何字体系列,只需写入文本文件。 所有这些都可以正常工作,但cpu使用率会立即翻倍。 我在这里做错了什么? 我尝试了许多其他公式,但都有相同的结果,高cpu使用率。如果我用“Calibri”这个词,一切都好。 先谢谢你 private string path = "fontNames.txt"; public Size2 DrawText(string text, int height, Vector2 po

我这里有这个代码,还有一个文本文件,里面有字体的名称。我试图做的是让用户选择他们想要的任何字体系列,只需写入文本文件。 所有这些都可以正常工作,但cpu使用率会立即翻倍。 我在这里做错了什么? 我尝试了许多其他公式,但都有相同的结果,高cpu使用率。如果我用“Calibri”这个词,一切都好。 先谢谢你

private string path = "fontNames.txt";

public Size2 DrawText(string text, int height, Vector2 position, Color.White, FontDrawFlags align = FontDrawFlags.Left)
{
    using (var reader = new StreamReader(path))
    {
        string name = reader.ReadLine();
        reader.Close();
        return fontRenderer.DrawText(text, name, height, position, color, align);
    }
//return fontRenderer.DrawText(text, "Calibri", height, position, color, align);
}

private Font GetFont(string name, int height)
{
    Tuple<string, int> key = Tuple.Create(name, height);
    if (fonts.TryGetValue(key, out font)) return font;
    font = new Font(device, new FontDescription
    {
        MipLevels = 1,
        Height = height,
        FaceName = name, // "Calibri"
        OutputPrecision = FontPrecision.Default,
        Quality = FontQuality.ClearType
    });
    fonts.Add(key, font);
    return font;
}
private string path=“fontNames.txt”;
公共大小2 DrawText(字符串文本、整数高度、矢量2位置、颜色.White、FontDrawFlags align=FontDrawFlags.Left)
{
使用(变量读取器=新的流读取器(路径))
{
字符串名称=reader.ReadLine();
reader.Close();
返回fontRenderer.DrawText(文本、名称、高度、位置、颜色、对齐);
}
//返回fontRenderer.DrawText(文本“Calibri”、高度、位置、颜色、对齐);
}
私有字体GetFont(字符串名称,整数高度)
{
Tuple key=Tuple.Create(名称、高度);
if(font.TryGetValue(key,out font))返回字体;
字体=新字体(设备,新字体描述
{
MIP级别=1,
高度=高度,
FaceName=name,//“Calibri”
OutputPrecision=FontPrecision.Default,
质量=FontQuality.ClearType
});
字体。添加(键,字体);
返回字体;
}

字符串名称是否可能=reader.ReadLine()Calibri行时,code>将被删除/优化,因为它从未被使用过?此外,每次drawaction都从文件中读取fontname是一种不好的做法。您应该缓存它。可能不相关,但您不需要
读卡器。关闭
行,因为
使用
语句将负责关闭和清理
流读卡器
GetFont在其中做什么?你忘了在DrawText中使用它了吗?@Matt是的,我知道,只是没有注意删除它,因为我有很多版本,我有点搞砸了:)@Jeroen van Langen-你是什么意思…你能举个例子吗?