gpt4 book ai didi

c# - 温莎型工厂不释放 child

转载 作者:行者123 更新时间:2023-11-30 17:16:00 25 4
gpt4 key购买 nike

我在 Windsor 2.5.1 中注册了一个工厂和组件,如下所示:

interface IFooFactory{
IFoo CreateFoo();
}

interface IFoo {
void DoSomething();
}

class ConcreteFoo : IFoo, IDisposable {
public void Dispose(){
Log.info("Going now, bye!")
}
}

container.Register(
Component.For<IFooFactory>().AsFactory().Lifestyle.PerWebRequest,
Componenet.For<IFoo>().ImplementedBy<ConcreteFoo>().Lifestyle.Transient
);

但我注意到的是 IFoo 的实例(每个请求可能有 100 个左右)没有被释放或调用它们的 dispose 方法。

我根据此处的文档假设:http://docs.castleproject.org/Windsor.Typed-Factory-Facility-interface-based-factories.ashx如果工厂是 PerRequest 那么它将释放它在请求结束时创建的对象。

如果我将工厂本身传递给我的组件,并像这样调用释放方法:

interface IFooFactory{
IFoo CreateFoo();
void Releaser(IFoo foo);
}

interface IFoo {
void DoSomething();
}

class ConcreteFoo : IFoo, IDisposable {

IFooFactory fact;

public ConcreteFoo(IFooFactory fact)....

public void DoSomething(){
fact.Releaser(this);
//Do the rest
}

public void Dispose(){
Log.info("Going now, bye!")
}
}

然后我的组件会按预期发布。关于这是错误还是我误解了什么的任何建议。我的解决方案在一天结束时有效,但不如我希望的那么好。

最佳答案

根据主要问题下方的评论,Krzysztof 发布了更新以在温莎修复此问题。如果您看到这些问题,请升级到 2.5.4 或更好的版本,如果可以的话,升级到 Windsor 3。

关于c# - 温莎型工厂不释放 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7597297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com