I'm creating a system that takes readings from a hardware device that sends data via a serial port. Every time a "packet" comes in off the serial port, I update and redraw some GUI components to reflect the updated information. Since serial port events stem from a separate thread, I have to call Invoke(Invalidate) on several components to get them to redraw, and this could potentially cause the GUI to get behind the serial port data since the GUI will queue up a bunch of Invoke() requests if the hardware device starts sending, say, 500 packets a second.
Is there any way to find out if there is already an Invoke(Invalidate) request on a GUI component I can prevent the code from queuing up a bunch of these, or should I take a different approach entirely to updating my GUI components?