Правда ли что ламбда-выражения неправильно построены и не освобождают ресурсы - C#
Формулировка задачи:
В одном из буржуйских форумов нашел информацию, но не до конца все было понятно.
Вопрос к специалистам, правда ли что ламбда-выражения неправильно построены не освобождают ресурсы, как там было описано, что к примеру вот такая конструкция не освобождает ресурсы
а вот такая освобождает
как бы получается, что ламбда-выражение, преобразуясь в делегат, в первом случае не уничтожается сборщиком мусора, т.к. есть прямая ссылка на this, а во втором случае мы передаем ссылку на this в параметр, после выполнения делегат не имея ссылок может быть удален.
Жду советов по этому поводу, т.к. наблюдаю в своей программе утечки памяти, а таких ламбда-выражений как первый вариант у меня немало.
this.Invoke( (Action)delegate { this.Text = this.DisplayText; //ну и т.д. } );
Action<Control> act = ( me ) => { me.Text = ( me as AMButton ).DisplayText; //ну и т.д. }; act.Invoke( this );
Решение задачи: «Правда ли что ламбда-выражения неправильно построены и не освобождают ресурсы»
textual
Листинг программы
this.Invoke( (Action)delegate { this.Text = this.DisplayText; //ну и т.д. } );
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д