Donald, it might surprise you, but the precise answer to this question is contained in my second answer to you previous
question.
All you need it to read the last code sample from my Article from Tips/Tricks section:
Simple Blocking Queue for Thread Communication and Inter-thread Invocation[
^].
See also Alternative Tip to my article and related Microsoft sample (v.4.0 only, while I provide a solution good for all Framework versions 2.0 and later).
This last sample shows how to organize inter-thread invocation. You can use this code with very minimal changes: just instantiate generic with your event argument type.
Further questions are welcome.
Good luck!
—SA