Managing Ports and Transfers in .NETEvents provide a way to pass data and event notifications between modules
while requiring only loose coupling between modules. The module that raises
the event doesn’t have to know anything about a module that handles the event.
The module that raises the event just makes the event and its parameters avail-
able to any module that wants to receive data or take other action when the
event is raised. On being notified of an event, a module can run a routine that
accepts passed data and performs any other actions as needed.
For example, a ComPorts class can declare an event that passes text to a form
module:Friend Shared Event UserInterfaceData (ByVal textToAdd As String)
internal delegate void UserInterfaceDataEventHandler(string textToAdd);
internal static event UserInterfaceDataEventHandler UserInterfaceData;
A routine that reads data from the port can raise the event:Dim newReceivedData As String
' Get data from the COM port.newReceivedData = selectedPort.ReadExisting' Raise the event to make the data available to other modules.RaiseEvent UserInterfaceData(newReceivedData)string newReceivedData = null;
// Get data from the COM port.newReceivedData = SelectedPort.ReadExisting();// Raise the event to make the data available to other modules.if (null != UserInterfaceData)
{
UserInterfaceData(newReceivedData);
}
To receive the data, the form’s module specifies a routine to execute when the
event occurs. The routine must have the same type and number of parameters