如何使用Lazy <T>Func <T> valueFactory,如果初始化失败,则不应使用缓存的异常,并且不应为初始化运行多个线程

问题描述

如何以如下方式使用C#的Lazy(函数值工厂):如果初始化失败,则不应使用“缓存的异常”,并且同时不应运行多个线程进行初始化。

如果我使用LazyThreadSafetyMode.PublicationOnly作为第二个参数,则它将在启动时运行多个线程进行初始化,并且如果初始化中发生异常,则会从所有线程中引发异常。但是,如果我使用LazyThreadSafetyMode.ExecutionAndPublication作为第二个参数,它将缓存异常并重新抛出该异常,再也不会再次初始化

我需要一个模式/版本,该模式/版本应在单线程上运行以进行初始化,并且不应该缓存异常。

我不能使用构造器版本,因为我必须根据在运行时设置的某些参数有条件地创建T的不同实例,

我正在使用Lazy(func())并有条件地返回不同的实现

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)