如果我有一个名为WidgetProcessor的服务(服务层对象而不是Web服务),并且该服务只有一个名为Process()的方法,则在该方法中我使用另一个服务(服务层对象)。让我们调用这个服务WidgetValidator它有一个方法Validate()从Parallel.ForEach中调用。
1)我假设我不做任何验证方法,如果它执行多次计算,它将不是线程安全的......正确吗?
2)注入WidgetValidator对象的正确方法是什么。如果我通过构造函数注入WidgetValidator并将其分配给类级别的私有变量 - 看起来那样线程安全性会更低......好吧,与在Parallel.ForEach中新建一个WidgetValidator相比。但是这一切都让我想到了“Code Smell”!我是否应该对Validate方法中的代码应用锁定。
注意:我正在使用Ninject作为我的IoC容器。
答案 0 :(得分:1)
这取决于Validator是否正在改变共享状态。如果不是,那么您可以重用相同的实例。如果它正在改变共享变量,则无法同时调用它。