关于Lock静态变量的方法

I'm CodeBear I'm CodeBear 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有如下的伪代码

public class Test
{
public static DataTable GetData1()
{
DataTable dt=DAL.GetData();
//一系列操作
return dt;
}

public static DataTable GetData2()
{
DataTable dt=DAL.GetData();
//一系列操作
return dt;
}
}


由于当初设计的时候没有考虑周全,导致GetData1() 和GetData2()都调用了数据访问层的同一个方法,我觉得对代码修改最小的修改的方法就是 增加一个静态变量,如


public class Store
{
public static DataTable dt;
}
public class Test
{
public static DataTable GetData1()
{
Store.dt=DAL.GetData();
//一系列操作
return dt;
}

public static DataTable GetData2()
{
DataTable dt=Store.dt;
//一系列操作
return dt;
}
}


然后,人家说 static线程是不安全的,需要锁一下,因为没有用过,想问大家一下,是不是这样锁的:


public class Store
{
public static DataTable dt;
}
public class Test
{
public static object obj;
public static DataTable GetData1()
{
DataTable dt= GetDt();
//一系列操作
}

public static DataTable GetData2()
{
DataTable dt= GetDt();
//一系列操作
}
public static DataTable GetDt()
{
lock(obj)
{
if(Store.dt!=null)
{
return Store.dt;
}else
{
Store.dt=DAL.GetData();
return Store.dt;
}
}
}
}

...全文

相关推荐

评论 18
收藏 已收藏
分享
返回顶部
I'm CodeBear
C# 111,128 成员 642,537 内容