lock与double check

来源:互联网 发布:怎么应对反野 知乎 编辑:程序博客网 时间:2024/06/05 13:08

private static object sync=new object();
        public static string GetBoardTree()
        {
            string treeHtml = null;
            string path = System.Web.HttpContext.Current.Server.MapPath("~/App_Data/");


            // 不存在树文件,调用创建方法
            if (!File.Exists(path + "tree.xml"))
            {
  lock(sync)
  {
   if (!File.Exists(path + "tree.xml"))
   {
    BoardDAL boardDal = new BoardDAL();
    DataTable dt = boardDal.GetAllBoard(false);
    treeHtml = boardDal.CreateTempTreeFile(dt);
   }
  }
            }
            else
            {

   StreamReader sr = File.OpenText(path + "tree.xml");

   StreamReader TxtReader = new StreamReader(path + "tree.xml", System.Text.Encoding.UTF8);
   treeHtml = TxtReader.ReadToEnd();
   TxtReader.Close();
  }
            }
            return treeHtml;

        }
}

原创粉丝点击