public delegate void DelegateType();
Это определяет синтаксис для делегата .Это ссылка на метод, статический или метод экземпляра.
Когда вы вызываете BeginInvoke , вы передаете делегат в качестве параметра.Компилятор C # преобразует любой явный тип делегата в System.Delegate, но поскольку параметр определен как принимающий любого делегата (через System.Delegate ), вы должны явно определить тип.
Когда вы указываете:
new DelegateType(functionName)
Вы создаете делегат определенного типа (DelegateType), который затем передается функции.
Часто более новые API будут использовать известныетипа, например System.Action (который имеет тот же синтаксис, что и тип DelegateType).Если метод принимает «Действие», вам не понадобится приведенное выше определение, и вы можете сделать следующее:
CallMethodTakingAction(functionName);