How is event handling handled internally for a native C++ application? (Hint: Remove the __gc keywords and the namespace declarations from this hour's lesson.)
Native C++ event handling uses a linked list that stores function pointers for each event handler. It also creates a special function that, when called, walks through the list and calls each of those functions.
How is a delegate related to an event?
A delegate is another name for the event handler for that event. In other words, when a delegate is associated with an event, that delegate will be called when the event is fired.
How many function pointers can a delegate contain and how do you find out how many a certain delegate can call?
A delegate can contain more than one pointer to an event handler when the CombineImpl function is declared in the delegate class. To find out how many functions the delegate is bound to, call the function GetInvocationList and access the Count property of that result.
How would you go about implementing your own Invoke function within a delegate class?
Call the GetInvocationList member function and then walk through the array of delegates that was returned, calling each function to which each delegate is bound.