Exemple #1
0
        /// <summary>
        /// 初始化
        /// </summary>
        public static void Initialize()
        {
            _directMutex = new Mutex(false, SecretUtil.MD5Encrypt32(CachePath));
            var doc = new XmlDocument();

            switch (CacheMode)
            {
            case ObCacheMode.On:
                break;

            case ObCacheMode.Off:
                return;

            case ObCacheMode.Secret:
                _exteName = ".dat";
                doc       = new XmlEDocument();
                break;
            }
            if (!Directory.Exists(CachePath))
            {
                Directory.CreateDirectory(CachePath);
            }
            foreach (var filePath in Directory.GetFiles(CachePath, "*" + _exteName))
            {
                try
                {
                    doc.Load(filePath);
                }
                catch
                {
                    continue;
                }
                var obcache = doc.SelectSingleNode("obcache");
                if (obcache == null)
                {
                    return;
                }
                foreach (XmlElement childNode in obcache.ChildNodes)
                {
                    var model = new ObSqlcache
                    {
                        Version = childNode.GetAttribute("version"),
                        SqlText = childNode.ChildNodes[0].InnerText
                    };
                    var key = childNode.GetAttribute("key");
                    if (childNode.ChildNodes[1].InnerText.Length > 0)
                    {
                        var columns = childNode.ChildNodes[1].InnerText.Split(',');
                        model.ColumnNames = new List <string>();
                        foreach (var column in columns)
                        {
                            model.ColumnNames.Add(column);
                        }
                    }
                    lock (HCacheMemory)
                    {
                        try
                        {
                            if (!HCacheMemory.ContainsKey(key))
                            {
                                HCacheMemory.Add(key, model);
                            }
                        }
                        catch
                        {
                            //continue;
                        }
                    }
                }
            }
            Initialized = true;
        }