爱亚搏 > IsolatedStorageSettings线程安全调用方式

IsolatedStorageSettings线程安全调用方式

分类: wp ?|? 标签: 线程安全,IsolatedStorage ?|? 作者: shuaishenkkk 相关 ?|? 发布日期 : 2012-10-22 ?|? 热度 : 488°

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

/// 
/// IsolatedStorageSettings是非线程安全的,多线程环境下对临界资源的访问应该互斥进行
/// 警告,对于IsolatedStorageSettings的访问都应该通过本类,严禁直接访问。
/// using System;using System.IO.IsolatedStorage;
public class ApplicationSettingHelper{    private static object _sync = new object();    
///     
///     
///     
///     
///     
///     
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;    
}    
///     
///     
///     
///     
///     
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;   
}   
 ///     
 ///     
 ///     
 ///     
 ///     
 ///     
 public static T GetEntityObj(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;    
}    
///     
///     /
//    
 ///     
 ///    
 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;    
}
}