【问题标题】:Difference between Lazy<T> and LazyInit<T>Lazy<T> 和 LazyInit<T> 之间的区别
【发布时间】:2011-03-22 00:35:50
【问题描述】:

我正在使用的课程中有以下行。

 private static readonly LazyInit<TestClass> _instance = new LazyInit<TestClass>(() => new TestClass(), LazyInitMode.EnsureSingleExecution);

有一天,我想受益于 .NET 4 附带的所有新功能,安装它之后,地狱就崩溃了。

我的 LazyInit 不再工作了。所以我用 Lazy 替换了每一次出现,但是呢? LazyInitMode.EnsureSingleExecution?

我以为是LazyThreadSafetyMode.ExecutionAndPublication

private static Lazy<LookupService> s_instance = new Lazy<LookupService>(() => new LookupService(), LazyThreadSafetyMode.ExecutionAndPublication);

这两个声明是否等价?

【问题讨论】:

    标签: c# .net lazy-loading lazy-evaluation


    【解决方案1】:

    实际上,是的。通过设置LazyThreadSafetyMode.ExecutionAndPublication,您是说您只希望单个线程能够构造Lazy&lt;T&gt;,这实际上是在构造阶段“确保单次执行”。 PublicationOnly 将允许多个线程运行构造函数,但只存储一个结果(第一个完成)。

    【讨论】:

      猜你喜欢
      • 2015-11-15
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 2021-04-09
      • 2016-01-19
      相关资源
      最近更新 更多