VBA: асинхронное управление слайдами PowerPoint из анимированных слайд-шоу - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть презентация PowerPoint, содержащая анимированное изображение и скрипт VBA. Сценарий вызывает библиотеку DLL, написанную на C #, цель которой состоит в добавлении нескольких слайдов и фигур в презентацию. К сожалению, вызов DLL имманентно занимает несколько секунд, и, поскольку в настоящий момент он работает полностью синхронно, анимированное изображение не обновляется в течение этого времени, поэтому показ слайдов выглядит запаздывающим.

Поэтому я хотел, чтобы DLL работала асинхронно, используя простой ThreadStarter:

public void DllEntrancePoint() {
    if (_isRefreshing)
        return;

    _isRefreshing = true;
    var threadStarter = new ThreadStart(DoAllTheWork);
    threadStarter += () => _isRefreshing = false;

    new Thread(threadStarter).Start();
}

К сожалению, когда я выполнил DLL после этой модификации, ее скорость замедлилась с нескольких секунд до нескольких минут. Хотя анимированное изображение теперь отображается довольно плавно, это замедление неприемлемо для меня.

Как я могу запустить вызов DLL в подходящее время без задержки анимации? Я предполагаю, что есть какие-то многопоточные издержки, делающие асинхронный вызов таким медленным. Возможно ли достичь этой цели? Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...