Возможно вызвать синхронный метод асинхронно в MATLAB®. С некоторыми модификациями можно использовать Microsoft®
BeginInvoke
и EndInvoke
методы. Для получения дополнительной информации обратитесь к MSDN® статья Calling Synchronous Methods Asynchronously.
Можно использовать делегатов, чтобы вызвать синхронный метод асинхронно при помощи BeginInvoke
и EndInvoke
методы. Если поток, который инициирует асинхронный вызов, не должен быть потоком, который обрабатывает результаты, можно выполнить метод коллбэка, когда вызов завершается.
Примечание
MATLAB является однопоточным приложением. Поэтому обработка асинхронных вызовов в среде MATLAB может привести к мертвым блокировкам.
EndInvoke
С out
и ref
Аргументы типаДелегат MATLAB подпись для EndInvoke
следует специальным правилам отображения, если у вашего делегата есть out
или ref
аргументы типа. Для получения информации об отображении смотрите Делегатов.NET С и касательно Аргументов типа. Для примеров смотрите EndInvoke
страница с описанием.
Для MATLAB, чтобы обработать событие, которое выполняет коллбэк делегата на основном потоке, вызовите MATLAB pause
(или подобное) функция.