объединение с Виндзором

Я опробовал образ жизни пула с Windsor.
Допустим, я хочу, чтобы несколько задач CustomerTask работали с пулом 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");
    }
}

person AlonEl    schedule 03.05.2010    source источник


Ответы (1)


Я нашел эту статью в dotnetslackers, которая в значительной степени прояснила для меня ситуацию.
maxPoolSize — максимальное количество экземпляров, которые будут возвращены в пул после выпуска. последующие выпуски приведут к отбрасыванию объектов.

одна неточность, которую я заметил, заключается в том, что initialPoolSize — это количество экземпляров, созданных при первом разрешении, а НЕ создание контейнера, как утверждается в статье (вероятно, из-за изменений версии с момента ее написания). )

person AlonEl    schedule 03.05.2010