。。
为什么锁定的是一个object对象的lockHelper而不是IDataProvider对象_instance呢?Discuz.Data
DataProvider.cs
namespace Discuz.Data
{
public class DatabaseProvider
{
private DatabaseProvider()
{ } private static IDataProvider _instance = null;
private static object lockHelper = new object(); static DatabaseProvider()
{
GetProvider();
} private static void GetProvider()
{
try
{
_instance = (IDataProvider)Activator.CreateInstance(Type.GetType(string.Format("Discuz.Data.{0}.DataProvider, Discuz.Data.{0}", BaseConfigs.GetDbType), false, true));
}
catch
{
throw new Exception("请检查DNT.config中Dbtype节点数据库类型是否正确,例如:SqlServer、Access、MySql");
}
} public static IDataProvider GetInstance()
{
if (_instance == null)
{
lock (lockHelper)
{
if (_instance == null)
{
GetProvider();
}
}
}
return _instance;
} public static void ResetDbProvider()
{
_instance = null;
}
}
}
为什么锁定的是一个object对象的lockHelper而不是IDataProvider对象_instance呢?Discuz.Data
DataProvider.cs
namespace Discuz.Data
{
public class DatabaseProvider
{
private DatabaseProvider()
{ } private static IDataProvider _instance = null;
private static object lockHelper = new object(); static DatabaseProvider()
{
GetProvider();
} private static void GetProvider()
{
try
{
_instance = (IDataProvider)Activator.CreateInstance(Type.GetType(string.Format("Discuz.Data.{0}.DataProvider, Discuz.Data.{0}", BaseConfigs.GetDbType), false, true));
}
catch
{
throw new Exception("请检查DNT.config中Dbtype节点数据库类型是否正确,例如:SqlServer、Access、MySql");
}
} public static IDataProvider GetInstance()
{
if (_instance == null)
{
lock (lockHelper)
{
if (_instance == null)
{
GetProvider();
}
}
}
return _instance;
} public static void ResetDbProvider()
{
_instance = null;
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货