主要内容

从 .NET 启动 MATLAB 会话

有关如何设置和编译 .NET 引擎程序的信息,请参阅Test Your .NET Development Environment

您可以从 .NET 程序以同步或异步方式启动 MATLAB® 会话。使用以下 MathWorks.MATLAB.Engine.MATLABEngine 方法启动 MATLAB:

您应始终使用 TerminateEngineClient 方法终止 MATLAB 会话。

为以下各项添加 using 语句:

  • MathWorks.MATLAB.Engine

  • MathWorks.MATLAB.Types

  • MathWorks.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();
        }
    }
}

另请参阅

主题