Я хотел бы предложить, чтобы при вызове ваших функций порождалась MATLAB (или мастерская MATLAB в реальном времени, которая встроена в DLL), и функция запускалась. Интерфейс MATLAB между C # и C, вероятно, имеет несколько глобальных внешних переменных, и в результате MATLAB, вероятно, не может быть создан дважды в одном и том же процессе. Кроме того, сам MATLAB во многих отношениях является однопоточным. Они работают над расширением использования многоядерных процессоров.
Ранее я использовал интерфейс Java / Matlab и читал на этом сайте следующее:
Matlab однопоточный. Это означает, что если вы попытаетесь выполнить eval или feval из функции Java, которая была вызвана непосредственно из функции Matlab, она будет зависать в ожидании завершения первой функции matlab.
То, что я мог бы предложить в качестве теста, это поместить DoKalmanFilter и DoImageProcessing в отдельные сборки или приложения, а затем создать приложение, которое порождает два новых отдельных приложения. Таким образом, вы получаете два процесса, и MATLAB будет запускаться один раз внутри каждого процесса, давая вам возможность запускать ваши функции одновременно.
Если это сработает, вы можете начать думать об этом. Вы не хотите, чтобы приложения создавались и закрывались все время. Возможно, вам понадобится использовать межпроцессное взаимодействие между вашими процессами для передачи данных, это может стать уродливым: -)