.NET メソッドの非同期呼び出し
MATLAB における .NET メソッド非同期呼び出しの処理
MATLAB® では、同期メソッドを非同期で呼び出せます。Microsoft® の BeginInvoke
および EndInvoke
メソッドを少し変更して使用できます。同期メソッドの非同期的呼び出しの詳細については、Microsoft の Web サイトを参照してください。
デリゲートを使用すると、BeginInvoke
および EndInvoke
メソッドを使って同期メソッドを非同期で呼び出すことができます。非同期呼び出しの開始スレッドが、結果処理のスレッドである必要がない場合は、呼び出しの完了時にコールバック メソッドを実行できます。
メモ
MATLAB はシングルスレッド アプリケーションです。したがって、MATLAB 環境で非同期呼び出しを処理すると、デッドロックが発生する可能性があります。
メモ
.NET 6 および .NET Core 以降のバージョンを含め、.NET Framework 4.0 以上を使用しているアプリケーションでは、System.Threading.Tasks
などのタスク ベースの API を使用します。詳細については、Microsoft の記事 .NET でのタスク ベースの非同期パターン (TAP) を参照してください。
out
および ref
型引数を指定した EndInvoke
の使用
関数 EndInvoke
の MATLAB デリゲート シグネチャは、デリゲートが out
または ref
型の引数をもつ場合、特別なマッピング ルールに従います。マッピングの詳細は、out および ref 型の引数をもつ .NET デリゲートを参照してください。例については、EndInvoke
のリファレンス ページを参照してください。
ポーリングを使用した非同期呼び出し終了時の検出
MATLAB では、メイン スレッド上でデリゲートのコールバックを実行するイベントを処理するために、MATLAB 関数 pause
(または類似の関数) を呼び出します。