Как написать делегат вместо лямбда-выражения и анонимного метода - C#

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

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

Пытаюсь разобраться с делегатами и многопоточностью. Есть простой проект-пример на WinForms, с прогресбаром и циклом, эмулирующем работу. (во вложении) Есть в коде некий метод

_worker_WorkCompleted

, который вызывается при завершении работы
        void metod1(bool canceled)
        {
            string message = canceled ? "Процесс отменен" : "Процесс завершен";
            MessageBox.Show(message);
            butstart.Enabled = true;
            progressBar2.Style = ProgressBarStyle.Blocks;
            textBox1.AppendText(_worker.report);
        }
        
        delegate void mydel();
 
        private void _worker_WorkCompleted(bool canceled) //  завершение 2
        {
            mydel MyAction = () =>  //лямбда выражение
            {
                metod1(canceled);
            };
            Invoke(MyAction);
        }
В оригинале используется лямбда-выражение. (и встроенный делегат Action) Вместо лямбда выражения можно так же написать анонимный метод
            
mydel MyAction = delegate  // анонимный метод
{
metod1(canceled);
};
Если я правильно понял, лямбда-выражения, анонимные методы и просто использование делегата - это всё равнозначные конструкции. У меня не получилось написать для данного случая просто делегат.

Вопрос вообщем такой:

Как в данном случае вместо анонимного метода и лямбда-выражения написать просто делегат?

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

textual
Листинг программы
            var method = new Action<bool>(metod1);
            method(canceled);
            Invoke(method);

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


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

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

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