2

正在运行的项目使用castle windsor实现了IOC/DI。项目中有很多模块。有一个名为ProcessEngine的模块,它将Invoices发送到我的模块进行自动过程,涉及7个步骤。IOC/DI CastleWindsor每次都会返回相同的实例

到现在为止ProcessEngine模块使用发送Invoices作为一个队列和我的模块完美工作。但现在ProcessEngine发送许多发票,通过跨越他们在不同的线程,每个发票有自己的线程准备就绪,所以问题出现。

我看到的问题是,通过使用Castle Windsor创建实例,并且它每次都返回相同的对象。这意味着所有的线程都有相同的实例,并创建混乱。然后,我通过使用新的关键字创建了具有一些私有属性的主要类的实例,并且它工作正常。

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

任何帮助将被高度appericiated。我没有很多Castle Windsor的知识,但我观察到它是一种Singleton模式,因为它每次使用Castle Windsor都会返回相同的对象。

+0

你应该考虑使用段落,而不是使用它们使你的问题难以阅读。 – svick

回答

3

您需要检查lifestyles

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

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

+4

我不会建议使用Per Thread生活方式,除非有人真的知道他们需要它。这很容易被滥用。 –

+0

@KrzysztofKoźmic:是的,它确实不容易使用,我更喜欢瞬态的,但在某些情况下它可能非常有用,所以值得一提。 – catflier

相关问题