提供一个线程安全的访问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;
}
}