.NET からの MATLAB セッションの開始
.NET エンジン プログラムを設定およびビルドする方法の詳細については、.NET 開発環境のテストを参照してください。
MATLAB® セッションを .NET プログラムから同期的または非同期的に開始することができます。次の MathWorks.MATLAB.Engine.MATLABEngine メソッドを使用して MATLAB を開始できます。
StartMATLAB— MATLAB セッションを同期的に開始します。StartMATLABAsync— MATLAB セッションを非同期的に開始します。
MATLAB セッションは、常に TerminateEngineClient メソッドを使用して終了しなければなりません。
以下には 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.");
}
}
}2 つの MATLAB セッションの非同期的開始
2 つの 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