Как насчет установки события таймера для запуска, например 10 раз в секунду, проверяя каждый раз, когда событие запускает истекшее время с последнего раза, и отслеживая, как часто это время превышает 250 мс, 500 мс, 750 мс и т. Д., Максимум до «10 с или более»? С точки зрения пользователя, не имеет значения, блокируется ли цикл сообщений в 90% случаев, если он никогда не блокируется более 10 мс. С другой стороны, если цикл сообщений блокируется на 15 секунд за раз каждые пять минут, многие пользователи сочтут это крайне неприемлемым, даже если цикл заблокирован всего в 5% случаев.