2

正在工作的项目使用城堡温莎实现 IOC/DI。项目中有很多模块。有一个名为的模块将自动过程ProcessEngine发送Invoices到我的模块,该模块涉及 7 个步骤。

到目前为止,模块使用队列中的一个一个ProcessEngine发送,并且我的模块运行良好。Invoices但是现在ProcessEngine通过在不同的线程中跨越它们来发送许多准备好的发票,每个发票都有自己的线程,所以问题出现了。

我看到的问题是实例是使用 Castle Windsor 创建的,并且每次都返回相同的对象。这意味着所有线程都具有相同的实例,这会造成混乱。然后,我使用new关键字创建了具有一些私有属性的主要类的实例,并且效果很好。

有什么方法可以限制 Castle Windsor 容器每次为我的模块的某些类返回新实例?该项目的体系结构指南必须使用 Castle Windsor 实例化对象,而不是使用 new 关键字。有什么解决办法吗?

任何帮助都将受到高度重视。我对温莎城堡了解不多,但我观察到它是一种单例模式,因为它每次使用温莎城堡都会返回相同的对象。

4

1 回答 1

3

你需要检查生活方式

默认行为是单例,这意味着当您请求解析时,它确实会返回相同的实例。

您可以使用 PerThread 或 Transient 生活方式。

于 2012-10-14T16:00:31.960 回答