У меня есть класс Foo, который используется для настройки контейнера и функционирует как фабрика для другого класса, Bar, который используется как точка входа для службы Windows.Autofac OnRelease() не называется
В класс Bar вводится экземпляр Baz, который открывает соединение сокета.
В Foo IBaz сконфигурирован с OnActivated(), чтобы открыть соединение, и OnRelease(), чтобы закрыть соединение.
Приемочный тест использует Foo для создания бара и проверки некоторых ожидаемых результатов. Проблема в том, что тест никогда не завершается, потому что соединение Baz никогда не закрывается. Это связано с тем, что OnRelease() никогда не вызывается.
Мое понимание заключается в том, что как только Foo выходит из сферы действия и собирается мусор, контейнер должен вызывать делегат OnRelease().
Почему это не может случиться?
Я просто наткнулся на это. Я не помню подробностей сейчас, но я думаю, что OnRelease() не вызывалось, потому что сокет сохранял объект в живых. –