Сталкивается с какой-то странной проблемой:
Я использую Delphi 6.0 и пытаюсь интегрировать сторонний элемент управления ActiveX, который подключается к серверу, передает и передает видео (в этом элементе нет видимости).
Элемент управления имеет настройку частоты кадров от 1 до 30, и если я установлю это значение на небольшое значение, например 1, поток VCL будет блокироваться на секунду каждую секунду.
Другими словами, кажется, что когда рендеринг видео выполняется внутри этого элемента управления ActiveX, он спит какое-то время, пока ему не потребуется отрисовать следующий кадр, но это предположение с моей стороны.
Глядя в реестр, я вижу, что этот элемент управления является потоковым в квартире, поэтому я подумал, что способ, которым это должно происходить, заключается в том, что я создал элемент управления в потоке VCL, и, таким образом, поток рендеринга в элементе управления маршалируется для запуска на VCL поток (на самом деле не имеет особого смысла для маршаллирования потоков внутри элемента управления), а также из-за некоторой логики сна это вызывает блокировку потока VCL.
Исходя из этого, я подумал, что если бы я создал выделенный поток для создания этого элемента управления (со скрытым окном + насосом сообщений), то спальные ситуации происходили бы на этом ActiveXCreatorThread вместо VCL. Элемент управления activex создается с использованием CreateParented (Fowner).
Излишне говорить, что это не сработало, и поток VCL продолжает блокировать таким же образом, и я озадачен. Как вы думаете, что вызывает исходное поведение? и почему мой хак не сработал?
Спасибо!