Main Content

.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 (または類似の関数) を呼び出します。

参考

|