1. 防止多线程创建的多个对象争抢资源
class myclass{
public myclass(){}
public static myclass GetInstance
{
get
{
if (_instance == null)
{
lock (_lockObject)
{
if (_instance == null)
{
_instance = new myclass();
}
}
}
return _getInstance;
}
}
}
2. 初始化参数或变量,直接获取静态资源
class Configaration{
private string _connecString;
private string _threadhold;
private string _nextHours;
private string _archiveDir;
private string _delFlag;
public string DelFlag
{
get { return _delFlag; }
set { _delFlag = value; }
}
//快捷键:选中private string ...;然后按Ctrl+r+e
public string ConnecString
{
get { return _connecString; }
set { _connecString = value; }
}
public string Threadhold
{
get { return _threadhold; }
set { _threadhold = value; }
}
public string NextHours
{
get { return _nextHours; }
set { _nextHours = value; }
}
public string ArchiveDir
{
get { return _archiveDir; }
set { _archiveDir = value; }
}
public static Configaration GetInstance() {
//获取配置文件路径
string iniPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,"Configaration.ini");
//如果存在该路径,则执行
if (!File.Exists(iniPath)) {
throw new FileNotFoundException(iniPath);
}
//new Configaration接收参数
Configaration conf = new Configaration();
string[] lines = File.ReadAllLines(iniPath);
//使用字典存值提升效率
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (string l in lines)
{
if (string.IsNullOrWhiteSpace(l))
continue;
if (l.Substring(0, 1) == "#")
continue;
if (l.Contains("=")) {
string[] arr = l.Split("=".ToCharArray(), 2,StringSplitOptions.RemoveEmptyEntries);
if (!(string.IsNullOrWhiteSpace(arr[0]) || string.IsNullOrWhiteSpace(arr[1])))
{
dict.Add(arr[0], arr[1]);
}
}
}
conf.ConnecString = dict["ConnectString"];
conf.Threadhold = dict["Threadhold"];
conf.DelFlag = dict["DelFlag"];
return conf;
}
}