从 .NET 启动 MATLAB 会话
有关如何设置和编译 .NET 引擎程序的信息,请参阅测试您的 .NET 开发环境。
您可以从 .NET 程序以同步或异步方式启动 MATLAB® 会话。使用以下 MathWorks.MATLAB.Engine.MATLABEngine 方法启动 MATLAB:
StartMATLAB- 以同步方式启动 MATLAB 会话。StartMATLABAsync- 以异步方式启动 MATLAB 会话。
您应始终使用 TerminateEngineClient 方法终止 MATLAB 会话。
为以下各项添加 using 语句:
MathWorks.MATLAB.EngineMathWorks.MATLAB.TypesMathWorks.MATLAB.Exceptions
使用 -nodesktop 选项启动 MATLAB
启动 MATLAB 并显示启动和关闭消息。
using MathWorks.MATLAB.Engine;
using MathWorks.MATLAB.Exceptions;
using MathWorks.MATLAB.Types;
using System;
namespace MathWorks.MATLAB.Engine.ConsoleExamples {
public class Program {
public static void Main(string[] args) {
Console.Write("Starting MATLAB... ");
using (dynamic eng = MATLABEngine.StartMATLAB("-nodesktop")) {
Console.WriteLine("done.");
eng.disp(new RunOptions(nargout: 0), "Hello. Closing MATLAB...");
}
// Call when you no longer need MATLAB Engine in your application.
MATLABEngine.TerminateEngineClient();
Console.WriteLine("done.");
}
}
}以异步方式启动两个 MATLAB 会话
以异步方式启动两个 MATLAB 会话,然后等待它们启动后再继续。
using MathWorks.MATLAB.Engine;
using MathWorks.MATLAB.Exceptions;
using MathWorks.MATLAB.Types;
using System.Threading;
using System.Threading.Tasks;
using System;
namespace MathWorks.MATLAB.Engine.ConsoleExamples {
public class Program {
public static async Task Main(string[] args) {
// StartMATLABAsync
Task<MATLABEngine> startMatlab1 = MATLABEngine.StartMATLABAsync();
Task<MATLABEngine> startMatlab2 = MATLABEngine.StartMATLABAsync();
Console.WriteLine("Two MATLAB sessions are starting in the background.");
Console.WriteLine("Wait for both to start before continuing.");
await Task.WhenAll(startMatlab1, startMatlab2);
Console.WriteLine("Two MATLAB sessions started.");
MATLABEngine.TerminateEngineClient();
}
}
}另请参阅
MathWorks.MATLAB.Engine.MATLABEngine