Я создаю систему, которая считывает данные с аппаратного устройства, которое отправляет данные через последовательный порт. Каждый раз, когда через последовательный порт приходит «пакет», я обновляю и перерисовываю некоторые компоненты графического интерфейса, чтобы отразить обновленную информацию. Поскольку события последовательного порта исходят из отдельного потока, мне приходится вызывать Invoke(Invalidate) для нескольких компонентов, чтобы заставить их перерисовываться, и это потенциально может привести к тому, что графический интерфейс будет отставать от данных последовательного порта, поскольку графический интерфейс поставит в очередь кучу Invoke() запрашивает, начинает ли аппаратное устройство отправлять, скажем, 500 пакетов в секунду.
Есть ли способ узнать, есть ли уже запрос Invoke (Invalidate) для компонента GUI, я могу предотвратить постановку кода в очередь из них, или мне следует полностью изменить подход к обновлению моих компонентов GUI?