Правда ли что ламбда-выражения неправильно построены и не освобождают ресурсы - 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;
//ну и т.д.
} );