同じVIに対して複数の非同期呼び出しを開始すると、デフォルトでは、呼び出しは直列化され、強制的に1度に1つずつ実行されます。このため、実行時間が長くなります。複数の呼び出しを並列的に実行して、1つの呼び出しが他の呼び出しの実行を遅延することを防ぐには、次の手順を実行します。

使用するオブジェクト

次のブロックダイアグラムオブジェクトを使用して、再入可能VIに対して非同期呼び出しを動的に開始し、後でVIの出力を収集します。

解決方法

次のブロックダイアグラムを作成し、再入可能VIに対して複数の非同期呼び出しを開始して、後で結果を収集します。



以下のリストには、前のダイアグラムについての重要な情報が記載されています。

メモ 「VIリファレンスを開く」関数の各オプションフラグ (16進数形式) は、『LabVIEWヘルプ』に記されています。このため、正しい値が渡されるように、数値定数入力の表記形式を必ず16進数形式に変更してください。
メモ 非同期呼び出しの結果を無視する場合は、非同期呼び出しを待機ノードを削除し、0x100オプションフラグの代わりに0x80オプションフラグを設定します。

注意とアドバイス

VIサーバプロパティおよびメソッドは、VIの非同期呼び出しの並列インスタンスを変更できません。0x40VIリファレンスで呼び出されたVIサーバプロパティまたはメソッドは、非同期呼び出しを開始ノードが実際に呼び出すVIクローンを変更できません。プロパティまたはメソッドは、元のターゲットVIに適用されます。非同期呼び出しを開始ノードが実際に呼び出すVIクローンにVIサーバプロパティやVIサーバメソッドを適用するには、ターゲットVI内でプロパティまたはメソッドを呼び出します。

サンプル

実行時間を短縮するために、VIの並列インスタンスを非同期に呼び出すサンプルについては、labview\examples\Application Control\VI Server\Asynchronous Call By ReferenceディレクトリのAsynchronous Call and Collect (Using Option 0x40) VIを参照してください。

同一タスクを解決するためのいくつかの同期的および非同期的なアプローチを比較するには、labview\examples\Application Control\VI Server\Asynchronous Call By ReferenceディレクトリのBenchmarking Asynchronous Calls VIを参照してください。