Dar*_*der 4 .net c# lazy-loading lazy-evaluation
我在使用的课程中有以下几行.
private static readonly LazyInit<TestClass> _instance = new LazyInit<TestClass>(() => new TestClass(), LazyInitMode.EnsureSingleExecution);
Run Code Online (Sandbox Code Playgroud)
有一天,我想要使.NET 4附带的所有新东西受益,安装它并彻底解决问题.
我的LazyInit不再工作了.所以我用Lazy <T>取代了每一次出现,但是呢
LazyInitMode.EnsureSingleExecution
?
我以为那会是LazyThreadSafetyMode.ExecutionAndPublication
.
private static Lazy<LookupService> s_instance = new Lazy<LookupService>(() => new LookupService(), LazyThreadSafetyMode.ExecutionAndPublication);
Run Code Online (Sandbox Code Playgroud)
这两个declerations是否相等?
实际上,是的.通过设置LazyThreadSafetyMode.ExecutionAndPublication
,您说您只希望单个线程能够构建Lazy<T>
,这有效地"确保单个执行"构建阶段. PublicationOnly
将允许多个线程运行构造函数,但只存储一个结果(第一个完成).
归档时间: |
|
查看次数: |
612 次 |
最近记录: |