System::ComponentModel::DoWorkEventHandler(this, &Form1::DoWorkEvent)
создает делегата.Синтаксис для создания делегата: gcnew delegatename(thisObject, functionPointer)
.Он создает делегат, который вызывает functionPointer
с this
, установленным на thisObject
.
К , вызывает делегат, вы вызываете его с соответствующими параметрами.delegateVariable->Invoke(parameter1, parameter2, etc)
.В случае DoWorkEventHandler
, parameter1
- это sender
, а parameter2
- это e
.
Вы путаете две разные вещи: создание и вызов.Строка DoWorkEventHandler(this, &Form1::DoWorkEvent)
создает делегата.Двумя параметрами являются thisObject
и functionPointer
, а не sender
и e
.
. Это должно было быть включено в любую книгу / ресурс, который вы использовали, чтобы узнать о делегатах в первую очередь.Например, эта статья говорит
Создание экземпляра делегата включает вызов конструктора.Если вы инкапсулируете статическую функцию, вы передаете один аргумент - указатель на эту функцию-член.Для функции экземпляра вы должны передать два аргумента: дескриптор этого экземпляра, а также указатель на функцию-член экземпляра.