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