I have a program that collects data over a TCP/IP channel.
I have multiple (sub)forms that create their own tread in the constructor when created (gcnew)
Example
Code:
FYD = gcnew Form_Log_Download(this->progressBar1, Lock, Connection, DatabaseX); 
FDD = gcnew Form_Dynamic_Download(this->progressBar2, Lock, Connection);
To show the progress on the main form the first parameter is a pointer to a progressbar which gets updated by the thread (delegate)
When clicked on the progressbar the subform will show up an show it's own progressbar and aditional info (Log wil show number of log record loaded and Dynamic will show percentage of executed commando's)
The forms are never closed, only Show and Hide are used.

The Dynamic Download Thread collects the next data: Voltage, Amperage, Power and temperature then sleeps for 10 seconds and repeats the cycle.

The thing i want is to set an event when the 4 values are received so the main thread can catch it.
The main thread can then draw gauges/ show the updated values for the ones the user enabled.
At the moment i use a dumb timer to update some items on the main form but that is not synchronous.
I want to connect the pameter (routine) of the timer tick to an event catch. So as soon as the values are updated in the thread the eventcatch can update the screen (or file on disk)

Is this possible? I have searched around but nothing about events from theads back to the mainform.