Для приложений WPF не существует родной интеграции типа «время жизни запроса». Если вы создаете вложенные области действия на всю жизнь, вы можете их отслеживать. Вам необходимо отслеживать ваши собственные жизненные области - как для создания, так и для утилизации. Возможно, у вас есть какая-то локальная переменная, которую вы установили, может быть, у вас есть какой-то другой механизм.
Однако, простое добавление обработчика событий в контейнер не сделает этого.
Каждая область жизни имеет свое собственное событие для начала дочерних областей действия.
Допустим, у вас есть это:
var builder = new ContainerBuilder();
var container = builder.Build();
var scope1 = container.BeginLifetimeScope();
var scope2 = scope1.BeginLifetimeScope();
var scope3 = scope1.BeginLifetimeScope();
При присоединении события к контейнеру не будут найдены вложенные областивне контейнера. Он увидит scope1
, но не увидит scope2
или scope3
.
Вы также не объяснили, что делаете с «самой вложенной областью действия на всю жизнь», поэтому это не так. Понятно, какой из них является «наиболее вложенным» - похоже, что scope2
и scope3
одинаково вложены, так что какой из них правильный?
Наконец, есть вопросы, которые нужно рассмотреть. Если вы порождаете жизненные области в асинхронных методах или делаете что-то, где разные потоки будут создавать разные области, простое отслеживание [в основном] последней созданной области действия приведет вас в мир проблем, где вы в конечном итоге попытаетесь решить проблемы с помощьюобласть видимости, которая существует в потоке, которого больше нет.
В действительно очень ограниченном случае, когда вы не выполняете многопоточность / асинхронность и никогда не имеете вложенных областей времени жизни, возможно, обработка события - это нормально. Я бы не советовал будущим читателям вопроса следовать этой дорожке.
Лучший способ обеспечить несколько невозможно, потому что нет заданного контекста. У вас есть ссылка на объем? Можете ли вы передать его в метод, а не пытаться найти его волшебным образом? Есть много способов решить проблему, но здесь недостаточно, чтобы дать хороший ответ. Подумайте о том, чтобы провести еще несколько поисков по этому вопросу, и, если это все еще ничего не даст, задайте новый вопрос с гораздо большим количеством информации, возможно, повторением и более подробным объяснением того, что вы пытались.