2010-05-03 49 views
0

我已經嘗試過與溫莎共享生活方式。
比方說,我希望多個CustomerTasks與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

我發現this文章在幾乎茅塞頓開,我dotnetslackers。
maxPoolSize是發佈時將返回到池的實例的最大數量。後續版本將導致丟棄對象。

一個不準確的,我注意到的是,initialPoolSize是在第一次決心和容器創建類的文章索賠創建的實例的數量(可能是由於版本的變化,因爲它是書面)