У меня странная проблема при использовании функции MLApp.GetWorkspaceData. Я заметил, что эта функция работает должным образом, если я делаю следующее:"Invalid Calle" при использовании MLapp в C#
matlab = new MLApp.MLAppClass();
object myObject;
matlab.GetWorkspaceData("myVariable", "base", out myObject);
Но если я тогда попробуйте использовать один и тот же объект, как выход, я получаю «Invalid» исключение вызванного метода. Кроме того, это также дает ту же ошибку:
matlab = new MLApp.MLAppClass();
object myObject = new object();
matlab.GetWorkspaceData("myVariable", "base", out myObject);
Это очень хлопотно, потому что мне нужно, чтобы получить большое количество данных из Matlab в Visual Studio, и я не могу практически создать 52K неинициализированные переменные и держать их вокруг. Есть ли способ «uninitialize» переменной? Есть ли какая-то концепция, которую я здесь отсутствует?
Вы можете установить 'myObject = null;', и сборщик мусора должен сделать остальное в какой-то момент. – wonko79
Wonko, этот актуал, похоже, сработал. Но я до сих пор не знаю, что происходит. Почему я не могу присвоить «новую» переменную? Почему он должен быть неинициализирован? – Cashomoto
Поскольку вы вызываете Mathlab поверх COM-оболочки, возможно, это связано с тем, что процесс не может изменить материал другого или что-то в этом роде. – wonko79