必要: VIスクリプト

VIスクリプトのタスクを実行するには、作成、編集、または確認するVIやオブジェクトのリファレンスを開く必要があります。リファレンスを返すVI、関数、プロパティ、およびメソッドを使用する際に、リファレンスを作成または開きます。VIリファレンスが開いている限り、対応するVIはメモリから削除されません。このため、多数のリファレンスが開いた状態になっていると、多数のVIやオブジェクトがメモリ上に存在することになり、LabVIEWのパフォーマンスが遅くなります。使用可能なメモリが足りない場合は、新規VIおよびオブジェクトを作成できなくなることもあります。こういったパフォーマンスの問題を回避するためには、スクリプトVI内で開いたVIやオブジェクトのリファレンスを閉じてください。

次のタイプのリファレンスは、開いたままにしてもパフォーマンスに影響を与えないため、閉じる必要はありません。

  • GObjectから継承するリファレンス
  • 「このVI」または「このアプリケーション」スタティックリファレンス

作成したり、開いたりしたリファレンスを閉じるには、「リファレンスを閉じる」関数を使用します。次のアクションは操作の一部としてリファレンスを閉じるため、「リファレンスを閉じる」を呼び出す必要がないことに注意してください。

動作 結果
一般:削除メソッドを使用 削除するオブジェクトのリファレンスが閉じる
Gオブジェクト:置換メソッドを使用 置換するオブジェクトのリファレンスが閉じる
VIのリファレンスを閉じる VI内のオブジェクトのリファレンスが無効になる場合がある

使用するオブジェクト

このVIスクリプトタスクには以下のオブジェクトが必要です。

解決方法

操作を開始する前に: 以下の手順の各ステップを説明したサンプルを参照するには、labview\examples\Application Control\VI Scripting\Managing ReferencesディレクトリにあるClosing References VIを開きます。

  1. スクリプトVIのブロックダイアグラム上にある、VIおよびVIオブジェクトのリファレンスを識別します。前述の閉じる必要のないタイプのリファレンスは無視してください。

    サンプルの詳細

    サンプルでは、スクリプトVIは以下の場所でリファレンスを開きます。

    • VIリファレンスを開く―ターゲットVIのリファレンスを開く
    • Gオブジェクトを走査―ターゲットVIの関数オブジェクトのリファレンスを開く
    • 関数:端子[]―関数のすべての端子のリファレンスを開く
    • 端子:接続されているワイヤ―各端子に接続されているワイヤのリファレンスを開く
    • ワイヤ:端子[]―ワイヤのすべての端子のリファレンスを開く
    • 関数:置換―置換する関数のリファレンスを開く
    • 関数:端子[]―置換する関数のすべての端子のリファレンスを開く
  2. 各リファレンスがLabVIEWで最後に使用される時を確認します。

    リファレンスのデータフローをトレースする場合、ノードの端子のリファレンスを使用するには、そのノードのリファレンスを開く必要があります。

    サンプルの詳細

    サンプルでは、開かれたリファレンスは以下の場所で最後に使用されています。

    • ターゲットVIのリファレンス―VIの最後このリファレンス以外の開かれたリファレンスはターゲットVI内のオブジェクトリファレンスであるため、VI全体ではこのリファレンスが使用されます。
    • 関数のリファレンス―関数:置換メソッドの後
    • 関数の端子のリファレンス―端子:接続されたワイヤメソッドの後
    • ワイヤのリファレンス―ワイヤ:削除メソッドの後
    • ワイヤの端子のリファレンス―端子:ワイヤを接続メソッドの後
    • 置換関数のリファレンス―関数:端子[]メソッドの後
    • 置換関数の端子リファレンス―端子:ワイヤを接続メソッドの後
  3. LabVIEWが開かれている各VIのリファレンスまたはそのオブジェクトリファレンスの1つを最後に使用した直後に、それらの各VIのリファレンスを「リファレンスを閉じる」関数に配線します。各「リファレンスを閉じる」関数が実行されるタイミングは、エラークラスタが提供するデータフローを使用して制御してください。リファレンスを閉じるときは、その結果に注意してください。

注意とアドバイス

  • VI内のすべてのオブジェクトリファレンスを使用し終わったら、オブジェクトリファレンスを閉じます—VIのリファレンスを閉じると、そのVI内のオブジェクトに対して開かれていたすべてのリファレンスが無効になる場合があります。VIリファレンスは、VIリファレンスとVI内のオブジェクトのすべてのリファレンスを使用し終わった後で閉じるのが安全です。
  • できるだけすぐにリファレンスを閉じる―大量のリファレンスが開いていると、LabVIEWの実行速度が遅くなります。アプリケーションによってはこの影響をほとんど受けない場合もありますが、大きなアプリケーションでは、パフォーマンスが劣化します。プログラム中でリファレンスを早めに閉じることにより、リファレンスが不必要にメモリ内に残ることを防ぎます。
  • 可能な限り、VIが終了する前にリファレンスを閉じる―実行が終了したVI内のリファレンスは、自動的に閉じられるので、VIの終点でリファレンスを閉じてもパフォーマンスは向上しません。

追加サンプル

VIスクリプトの使用時に多くのリファレンスを閉じる別のサンプルについては、labview\examples\Application Control\VI Scripting\Creating VIsディレクトリのCreating New VI From Scratch VIを参照してください。