Слабая сборка мусора в C#

#c# #weak-events

#c# #слабые события

Вопрос:

Сегодня я думаю о следующем сценарии:

У меня есть два класса A и B.

A предоставляет событие E.

B подписывается на это событие «E», используя слабый обработчик событий «W».

Через некоторое время никто не хранит никаких ссылок на B, но GC еще не запущен.

Пока B еще не собран GC, а A вызывает «E», будет ли вызываться обработчик слабых событий?

Я думаю, да, но мне любопытно, если я чего-то не упускаю.

Ответ №1:

Да, так и будет. WeakEventManager увидит, что объект, на который ссылается B, «живой» (еще не собран) и вызовет там событие.