Связывание события переданного значения в сеттере - PullRequest
0 голосов
/ 27 мая 2020

При назначении свойству Task со значением и привязке значения с обработчиком событий делегата. Выбирается ли значение для GarbageCollection после прохождения нового значения? Насколько я понимаю, поскольку в системе больше нет ссылки на старое значение, оно помечается для сборки мусора.

  private ITask _task;

  public ITask Task
        {
            get => _task;
            private set
            {
                if(_task != value)
                {
                    if(value != null)
                        value.PropertyChanged += (s, e) =>
                            {
                                if(((ITask)s).Status == TaskStatus.Ready)
                                    RaisePropertyChanged(nameof(ButtonCommand));
                            };

                    _task = value;
                    RaisePropertyChanged();
                }
            }
        }


1 Ответ

1 голос
/ 27 мая 2020

Согласно этому ответу , обработчик анонимных событий не предотвратит сборку мусора. Однако любой объект, который считывает Task до присвоения нового значения и по-прежнему сохраняет результат, будет сохранять ссылку на старое значение Task, предотвращая сборку мусора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...