国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

C#字體池技術實現代碼詳解

2024-07-09 22:41:51
字體:
來源:轉載
供稿:網友

字體池的應用,主要是為了解決字體不斷創建導致句柄泄漏/內存泄漏的問題,這個問題在Android上也同樣存在。

經測試,C# WinForm原生控件不存在字體問題,但是使用的第三方控件Dev 14.1就存在這樣的問題。

所以參照線程池思路,想到了使用字體池的方式,使系統中的字體統一為一個對象,經測試,有效解決了泄漏問題。

字體池代碼:

/// <summary>/// 字體緩存類/// </summary>public static class FontStatic{  /// <summary>  /// 緩存數組  /// </summary>  private static Dictionary<string, Font> sFonts = new Dictionary<string, Font>();   /// <summary>  /// 根據字體獲取一個緩存的字體對象  /// </summary>  /// <param name="font">字體</param>  /// <returns>已緩存字體</returns>  public static Font GetFont(Font font)  {    string key = string.Format("{0}-{1}-{2}-{3}", font.Name, font.Size, font.Italic, font.Bold);    if (!sFonts.ContainsKey(key))    {      sFonts.Add(key, font);    }     return sFonts[key];  }}

這里關鍵點在于判斷需要創建的字體是否已存在緩存字典中,經過探索,不能使用Equals等方法,只能折中采用幾個關鍵屬性組合判斷的方式

以上就是本次介紹的全部相關知識點,希望武林網之家整理的內容能夠幫助到大家。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南靖县| 武山县| 大田县| 开江县| 化州市| 稻城县| 玉林市| 木兰县| 霸州市| 鄂伦春自治旗| 太保市| 黄平县| 政和县| 台东市| 大足县| 丽江市| 杂多县| 囊谦县| 铁力市| 资溪县| 平阴县| 海宁市| 金平| 罗定市| 晋中市| 甘孜县| 株洲县| 延庆县| 海盐县| 固镇县| 雷波县| 蓬溪县| 南开区| 德保县| 阳新县| 扬中市| 舟曲县| 郴州市| 文水县| 淄博市| 泰州市|