CefSharp ScreenshotAsync не всегда возвращает правильное растровое изображение

У меня проблемы с захватом каждого кадра анимации с использованием ограниченного объекта CefSharp. Похоже, растровое изображение возвращается Browser.ScreenshotAsync не всегда правильно синхронизированы. Это моя функция рендеринга JavaScript, которая перемещает объект WebGL по горизонтали с постоянной скоростью:

function animate() {
    object.position.x -= 100; 
    renderer.render(scene, camera);
    cefBountObject('animate()');
}

Это мой ограниченный объект CEF:

public void cefBountObject(string callback) {
    Browser.ScreenshotAsync().ContinueWith((task) => {
        task.Result.Save(string.Format("{0:D4}.png", frameNumber++));
        Browser.EvaluateScriptAsync(callback);
    });
}

При этом каждый файл в последовательности сохраняется без пропусков: 0000.png, 0001.png, 0002.png и т. Д. Однако некоторые файлы изображений повторяются, а некоторые файлы изображений пересекают фрейм. Я думаю, что столкнулся с проблемой несинхронизированных потоков, но я не вижу, где это может быть. На самом деле, если я поставлю точку останова на последней строке Browser.EvaluateScriptAsync(callback); и пошаговая анимация, все файлы будут сгенерированы правильно.

0 ответов

Другие вопросы по тегам