Years after Allen Bauer and a few others wrote about Delphi MultiCast events, the Spring4D framework now supports MultiCast events on 3 platforms:
Mac OS x86
Depending on the platform, the minimum required Delphi version is this (the develop branch builds in Delphi XE6):
Win32: Delphi 2010 and up.
Win64: Delphi XE2 and up.
MacOSX: Delphi XE2 and up.
There are plans for support on Mobile platforms, and Spring4D needs help with that:
The Intel implementation is written in Assembly, and fast.
The Arm compiler does not allow Assembly language for various reasons.
So there is a need for an ARM solution not based on assembly in the Delphi code, preferably as cross-platform as possible. Even when Embarcadero solves QC 101064: TRttiInvokableType.CreateImplementation, there might still be a need for a fast implementation (the x86 and x64 implementations are fast and with the growth of mobile, fast could be a big benefit). If you are interested in helping, or just lurking around:
The current implementation of multi-cast events is in Spring.Events.pas.
The unit-tests are in Spring.Tests.Base.pas.
Some background information about the articles by Allen Bauer, and people implementing multi-cast events themselves:
The Oracle at Delphi » Multicast events using generics.
The Oracle at Delphi » Multicast Events – the cleanup.
The Oracle at Delphi » Multicast Events – the finale.
delphi – Getting Allen Bauer’s TMulticastEvent working – Stack Overflow.
Te Waka o Pascal · multicast events.
Delphi VCL for Win32 – multiple event handlers – Stack Overflow.
Delphi 7: very basic Implementing MultiCast Events for Win32 Delphi’s TDataset and TField Descendants.
Limited to only TNofityEvent: Multicast Delegates (or Web-archived-version of Mulicast Delegates as codebot.org happens to be down every once in a while).
–jeroenFiled under: Delphi, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Development, Software Development, Spring4D