Правда ли что ламбда-выражения неправильно построены и не освобождают ресурсы - C#

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Правда ли что ламбда-выражения неправильно построены и не освобождают ресурсы»

textual
Листинг программы
this.Invoke( (Action)delegate
{
   this.Text = this.DisplayText;
   //ну и т.д.
} );

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.308 из 5
Похожие ответы