У меня есть презентация 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 в подходящее время без задержки анимации? Я предполагаю, что есть какие-то многопоточные издержки, делающие асинхронный вызов таким медленным. Возможно ли достичь этой цели? Заранее спасибо.