【问题标题】:How to quit MATLAB process using C# and COM?如何使用 C# 和 COM 退出 MATLAB 进程?
【发布时间】:2015-10-03 21:42:30
【问题描述】:

我有一个从 C# 客户端调用 MATLAB 函数 (displayFigure.m) 的代码。每次我更新 .m 文件时,重新运行 C# 程序时不会反映所做的更改。

public void CallMLfunc(){
    MLApp.MLApp matlab = new MLApp.MLApp();
    matlab.Feval("displayFigure", 0, out result, input);
    matlab.Quit();
}

试图终止 MATLAB.exe 进程使用

matlab.execute("quit;"); 

并会得到以下未处理的异常:System.Runtime.InteropServices.COMException

在强制退出程序后,我再次重新运行它,会反映 displayFigure.m(版本 2)。是否有另一个退出 MATLAB 进程?

【问题讨论】:

    标签: c# matlab com reference-counting


    【解决方案1】:

    COM 对象的进程列表中有一个 MATLAB.exe。有时您可以关闭一个可见的窗口。有时没有。您可能拥有多个 MATLAB.exe,尤其是在您正在调试且 MATLAB 编辑器打开时,您也会让该实例运行。 matlab.Quit(); 应该终止与 COM 对象关联的 MATLAB.exe,但如果在 matlab.Feval() 或断点等期间出现异常,它可能不会执行。当我遇到这个问题时,我会终止具有最高 PID 的 MATLAB.exe。

    【讨论】:

      猜你喜欢
      • 2012-02-18
      • 2010-09-21
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 2011-06-18
      • 2013-04-29
      • 1970-01-01
      • 2020-02-18
      相关资源
      最近更新 更多