问题描述
如何以如下方式使用C#的Lazy(函数值工厂):如果初始化失败,则不应使用“缓存的异常”,并且同时不应运行多个线程进行初始化。
如果我使用LazyThreadSafetyMode.PublicationOnly作为第二个参数,则它将在启动时运行多个线程进行初始化,并且如果初始化中发生异常,则会从所有线程中引发异常。但是,如果我使用LazyThreadSafetyMode.ExecutionAndPublication作为第二个参数,它将缓存异常并重新抛出该异常,再也不会再次初始化
我需要一个模式/版本,该模式/版本应在单线程上运行以进行初始化,并且不应该缓存异常。
我不能使用构造器版本,因为我必须根据在运行时设置的某些参数有条件地创建T的不同实例,
我正在使用Lazy(func())并有条件地返回不同的实现
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)