1

如果我有一个名为 WidgetProcessor 的服务(服务层对象不是 Web 服务),并且该服务只有一个名为 Process() 的方法,在该方法中我使用另一个服务(服务层对象)。让我们将此服务称为 WidgetValidator,它有一个方法 Validate(),该方法从 Parallel.ForEach 中调用。

1)我假设如果我什么都不做 Validate 方法,如果它执行多个计算,它将不是线程安全的......对吗?
2)注入 WidgetValidator 对象的正确方法是什么。如果我通过构造函数注入 WidgetValidator 并将其分配给类级别的私有变量 - 与在 Parallel.ForEach 中新建一个 WidgetValidator 相比,这似乎会降低线程安全性……好吧。但这一切都让我想到了“代码气味”!我是否应该对 Validate 方法内的代码应用锁定。

注意:我使用 Ninject 作为我的 IoC 容器。

4

1 回答 1

1

这取决于验证器是否正在改变共享状态。如果不是,那么您可以重用相同的实例。如果它正在改变共享变量,则您不能同时调用它。

于 2012-05-03T18:25:07.913 回答