If you raise that event from a background thread, you'll be raising it on the wrong thread.

Over in the .NET CodeBank I have a UDP class that is derived from a class I use in a robotics project (which can be found in the Networking forum in a thread I started). It deals with broadcasts, too, so it might be of iterest for a variety of reasons.