У меня есть агрегатор событий, который использует WeakReferences для хранения Action<T>
. Проблема, с которой я сталкиваюсь, состоит в том, что мои действия продолжают собирать мусор.
Следующее не получится ...
public Foo(IEventAggregator eventAggregator)
{
eventAggregator.Subscribe<BarEvent>(DoNothing)
}
public void DoNothing(BarEvent aEvent) {}
И все же следующее удастся ...
private Action<BarEvent> _action;
public Foo(IEventAggregator eventAggregator)
{
_action = DoNothing;
eventAggregator.Subscribe<BarEvent>(_action);
}
public void DoNothing(BarEvent aEvent) {}
Очевидно, переменная _action помогает поддерживать жизнь, но я немного запуталась, почему ... и что более важно, есть ли способ сохранить действие без ссылки?