c# – 为什么表达式总是为’双重检查锁定’?
发布时间:2020-12-15 08:37:02 所属栏目:百科 来源:网络整理
导读:我有单独的对象’服务’和两个初始化和释放它的方法: public class BaseService{ protected static readonly object StaticLockObject = new object();}public abstract class WebServiceBaseTService : BaseService where TService : System.Web.Services.
我有单独的对象’服务’和两个初始化和释放它的方法:
public class BaseService { protected static readonly object StaticLockObject = new object(); } public abstract class WebServiceBase<TService> : BaseService where TService : System.Web.Services.Protocols.SoapHttpClientProtocol,new() { protected static void EnsureServiceIsOpened() { if (Service == null) { lock (StaticLockObject) { if (Service == null) { Service = new TService(); } } } } protected static void EnsureServiceIsClosed() { if (Service != null) { lock (StaticLockObject) { if (Service != null) // Why expression is always true { Service.Dispose(); Service = null; } } } } 对于带注释resharper的行(我使用版本5.1)显示一个提到的警告… 问题1:为什么? 问题2:为什么它不在’EnsureServiceIsOpened’方法中显示“类似”消息? 谢谢. 解决方法
这是ReSharper 5.X代码分析引擎中的错误.
在ReSharper 6.0中修复. 顺便说一下,R??eSharper 6带来了更多双锁模式分析的东西:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- postgresql 查看数据库,表,索引,表空间以及大小
- openOffice+pdf2swf类百度文库):pdf转swf(Linux,window)
- ruby-on-rails – 如何在本地定义环境变量而不更改其定义/将
- 可可 – Swift 3加载xib. NSBundle.mainBundle().loadNibNa
- 控制 Open XML WordprocessingML 文档中的文本
- 从bootm 命令讲起/U-boot的环境变量: bootcmd 和bootargs
- 求个为大神看看dwr与hibernate整合
- [ORACLE]杀死伪科学──也谈count(*)和count(1) (
- 年末压轴 - 第六届 Oracle 技术嘉年华全面阐释云时代
- c# – 为什么只有ForEach方法的列表