IsolatedStorageSettings线程安全调用方式

来源:互联网 发布:随州seo服务 编辑:程序博客网 时间:2024/05/07 12:11

提供一个线程安全的访问IsolatedStorageSettings的方式。

/// <summary>/// IsolatedStorageSettings是非线程安全的,多线程环境下对临界资源的访问应该互斥进行/// 警告,对于IsolatedStorageSettings的访问都应该通过本类,严禁直接访问。/// </summary>using System;using System.IO.IsolatedStorage;public class ApplicationSettingHelper{    private static object _sync = new object();    /// <summary>    ///     /// </summary>    /// <param name="key"></param>    /// <param name="value"></param>    /// <returns></returns>    public static bool AddEntity(string key, object value)    {        bool isAdd = false;        try{            if (!string.IsNullOrEmpty(key) && value != null)            {     lock (_sync) {   if (IsolatedStorageSettings.ApplicationSettings.Contains(key) == false){ IsolatedStorageSettings.ApplicationSettings.Add(key, value);                       IsolatedStorageSettings.ApplicationSettings.Save();                       isAdd = true;                    }                    else                    {                       IsolatedStorageSettings.ApplicationSettings[key] = value;                        IsolatedStorageSettings.ApplicationSettings.Save();                      isAdd = true;                   }               }           }        }       catch (Exception exception)       {           //LoggingHelper.Log("AddEntity", exception, true);           throw exception;       }       return isAdd;    }    /// <summary>    ///     /// </summary>    /// <param name="key"></param>    /// <returns></returns>    public static string GetEntityString(string key)    {        string strCacheEntiy = string.Empty;        try {    if (!string.IsNullOrEmpty(key))           {   lock (_sync) {   if (IsolatedStorageSettings.ApplicationSettings.Contains(key) == true)                {   strCacheEntiy = IsolatedStorageSettings.ApplicationSettings[key].ToString();     }               }         }     }      catch (Exception exception)      {    //LoggingHelper.Log("GetEntityString", exception,true);         throw exception;       }       return strCacheEntiy;   }    /// <summary>     ///      /// </summary>     /// <typeparam name="T"></typeparam>     /// <param name="key"></param>     /// <returns></returns>     public static T GetEntityObj<T>(string key)     {        T objCacheEntity;        try        {  if (!string.IsNullOrEmpty(key))           {  lock (_sync) {    if (IsolatedStorageSettings.ApplicationSettings.Contains(key) == true)  {   var settings = IsolatedStorageSettings.ApplicationSettings;settings.TryGetValue(key, out objCacheEntity);return objCacheEntity;}            }       }   }        catch (Exception exception)       {            //LoggingHelper.Log("GetEntityObj", exception,true);          throw exception;        }        return default(T);   }    public static bool RemoveEntity(string key)    {       bool isRemove = false;       try        {    if (!string.IsNullOrEmpty(key)) {   lock (_sync)  {  if (IsolatedStorageSettings.ApplicationSettings.Contains(key) == true){  IsolatedStorageSettings.ApplicationSettings.Remove(key); IsolatedStorageSettings.ApplicationSettings.Save(); isRemove = true; }             }          }     }      catch (Exception exception)      {   //LoggingHelper.Log("RemoveEntity", exception,true);throw exception;       }        return isRemove;    }    /// <summary>    ///     /// </summary>    /// <param name="key"></param>     /// <returns></returns>    public static bool IsIsolateStorageKeyExists(string key)     {       bool isExist = false;        try {    if (!string.IsNullOrEmpty(key)) {   lock (_sync) {  isExist = IsolatedStorageSettings.ApplicationSettings.Contains(key);  }        }       }       catch (Exception exception)       {           //LoggingHelper.Log("IsIsolateStorageKeyExists", exception, true);            throw exception;        }        return isExist;    }}


原创粉丝点击