亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#字體池技術(shù)實(shí)現(xiàn)代碼詳解

 更新時(shí)間:2019年11月24日 11:32:52   作者:未聞·Yokeqi  
在本篇文章里小編給大家整理的是關(guān)于C#字體池技術(shù)實(shí)現(xiàn)代碼詳解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。

字體池的應(yīng)用,主要是為了解決字體不斷創(chuàng)建導(dǎo)致句柄泄漏/內(nèi)存泄漏的問(wèn)題,這個(gè)問(wèn)題在Android上也同樣存在。

經(jīng)測(cè)試,C# WinForm原生控件不存在字體問(wèn)題,但是使用的第三方控件Dev 14.1就存在這樣的問(wèn)題。

所以參照線程池思路,想到了使用字體池的方式,使系統(tǒng)中的字體統(tǒng)一為一個(gè)對(duì)象,經(jīng)測(cè)試,有效解決了泄漏問(wèn)題。

字體池代碼:

/// <summary>
/// 字體緩存類(lèi)
/// </summary>
public static class FontStatic
{
  /// <summary>
  /// 緩存數(shù)組
  /// </summary>
  private static Dictionary<string, Font> sFonts = new Dictionary<string, Font>();
 
  /// <summary>
  /// 根據(jù)字體獲取一個(gè)緩存的字體對(duì)象
  /// </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];
  }
}

這里關(guān)鍵點(diǎn)在于判斷需要?jiǎng)?chuàng)建的字體是否已存在緩存字典中,經(jīng)過(guò)探索,不能使用Equals等方法,只能折中采用幾個(gè)關(guān)鍵屬性組合判斷的方式

以上就是本次介紹的全部相關(guān)知識(shí)點(diǎn),希望腳本之家整理的內(nèi)容能夠幫助到大家。

相關(guān)文章

最新評(píng)論