追加情報
TestStandは、.NETアセンブリを呼び出す全ステップをTestStandがアンロードし、アセンブリから作成されたすべてのオブジェクトを解放するまで、.NETアセンブリをメモリからアンロードできません。シーケンスの実行中、TestStandはFileGlobalsの実行時コピーを維持し、このコピーはExecutionオブジェクトによってリファレンスされます。完了したExecutionオブジェクトは、FileGlobalsへのリファレンスを解放しません。再起動しても実行にはまだ必要である可能性があるためです。Executionオブジェクトが破棄されると(通常はExecutionウィンドウが閉じると)、ExecutionオブジェクトはFileGlobalsへのリファレンスを解放します。
.NETオブジェクトリファレンスをFileGlobal変数に格納すると、変数がNothingに設定されるまで(詳細については、Special Constant Valuesを参照)、またはTestStandが親FileGlobalsコンテナへのリファレンスをすべて解放するまで、TestStandはオブジェクトへのリファレンスを解放しません。したがって、リファレンスを保持する変数をNothingに設定しないと、.NETはオブジェクトを破棄できず、実行ウィンドウを閉じるまでTestStandはアセンブリをメモリからアンロードできません。 TestStandは、ステップおよびシーケンスファイルのアンロードオプションおよびすべてのすべてのモジュールアンロード操作を効果的に無視します。
たとえば、TestStand 3.1では、FileGlobal変数に.NETオブジェクトリファレンスを格納し、FileGlobalsを参照するSequenceContextオブジェクトを.NETオブジェクトのメソッドに渡すと、.NETはそのメソッドから戻った後にそのリファレンスを解放します。そして、パラメータリファレンスをガベージコレクションに入れます。UnstroyedパラメータはFileGlobalsへのリファレンスを維持するので、FileGlobalsは次のガベージコレクションが発生するまで解放されません。唯一の回避策は、FileGlobal変数を明示的にNothingに設定するか、実行を完了して実行ウィンドウを閉じる前にコードモジュールでGC.Collectを呼び出すことです。
TestStand 3.5以降では、.NETアダプタは定期的に.NETに解放されたオブジェクトをガベージコレクションして破棄を確定し、メモリから削除するように要求します。この間隔はデフォルトの3秒に設定されていますが、Engine.DotNetGarbageCollectionIntervalプロパティを変更することで手動で設定できます。