代码之家  ›  专栏  ›  技术社区  ›  AlonEl

与温莎合流

  •  0
  • AlonEl  · 技术社区  · 14 年前

    我和温莎试过合泳的生活方式。
    假设我想要多个客户任务与一个Ilogger池一起工作。
    当我尝试解决的次数超过MaxPoolSize时,新的记录器会不断被创建。

    我遗漏了什么?最大池大小的确切含义是什么?

    我使用的XML配置是(演示代码):

    <component id="customertasks" type="WindsorTest.CustomerTasks, WindsorTestCheck" lifestyle="transient" />
    <component id="logger.console" service="WindsorTest.ILogger, WindsorTestCheck" type="WindsorTest.ConsoleLogger, WindsorTestCheck" lifestyle="pooled" initialPoolSize="2" maxPoolSize="5" />
    

    代码是:

    public interface ILogger
    {
        void Log(string message);
    }
    
    public class ConsoleLogger : ILogger
    {
        private static int count = 0;
        public ConsoleLogger()
        {
            Console.WriteLine("Hello from constructor number:" + count);
            count++;
        }
    
        public void Log(string message)
        {
            Console.WriteLine(message);
        }
    }
    
    public class CustomerTasks
    {
        private readonly ILogger logger;
    
        public CustomerTasks(ILogger logger)
        {
            this.logger = logger;
        }
        public void SaveCustomer()
        {
            logger.Log("Saved customer");
        }
    }
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   AlonEl    14 年前

    我找到了 this Dotneslackers上的一篇文章几乎为我清理了一切。
    最大尺寸 是释放时将返回池的最大实例数。后续版本将导致对象被丢弃。

    我注意到的一个错误是 初始池大小 是第一次解析时创建的实例数,以及 不是 像文章声明那样创建容器(可能是因为它被写入后版本发生了更改)