Я создаю приложение видеоплеера с пользовательским интерфейсом в C # и декодированием и отображением видео (DirectX) в C ++.
Код C ++ компилируется как DLL и взаимодействует с пользовательским интерфейсом C #.
Чтобы поддерживать правильную частоту кадров дисплея, мне нужно создать вторичный поток в C ++ DLL или C #, который может выполнять точную синхронизацию и вызывать функцию отображения через определенные промежутки времени.
Однако создание вторичного потока, который отправляет отображение в окно, созданное первичным потоком (из C # GUI), создает нарушение прав доступа и приводит к сбою.
Однако, если я использую объект таймера в C # для отображения, проигрыватель работает, но я не могу поддерживать правильную частоту кадров из-за его грубой гранулярности.
Что было бы хорошим решением для этого?