.vbs 内のオブジェクトはどのような順序で破棄されますか?
つまり、次のグローバルが与えられます。
Set x = New Xxx
Set y = New Yyy
次のいずれかに対する回答に興味があります。
.VBS に実装されているクラスのインスタンスは、どのような順序
Class_Terminate
で呼び出されますか? 大雑把な突っ込みは、作成の順序 (逆順ではありません!) を示唆していますが、これは保証されていますか?編集
Class_Terminate
:オブジェクトへの最後の最後の参照が解放されたときに呼び出されることを理解しています。つまり、x と y はどのような順序でリリースされ、それは保証されるのでしょうか? 簡単にするために、x と y がそれぞれのオブジェクトへの唯一の参照であると仮定します。オブジェクトのタイプは重要ですか? たとえば、.VBS にクラスを実装し、
Scripting.FileSystemObject
.編集: COM ライブラリは、スクリプト ホスト エンジンが何も知らない独自の内部循環参照を設定する可能性があることを理解しています。最初の質問への回答に何が影響するかを調べることに興味があります。
x と y がグローバルではなく Sub または Function に対してローカルである場合、上記の答えは異なりますか?
出口が通常か、例外によるか、または経由かによって異なります
WScript.Quit
か? (後者の場合、Class_Terminate
は終了する前にまだ未処理のオブジェクトに対して呼び出されているように見えますが、エラーが報告される可能性があります)。WScript オブジェクトはいつ破棄されますか?
スクリプトのホストは重要ですか? (wscript.exe 対 cscript.exe 対 Web ホスト エンジンの名前)
JScript のオブジェクト破棄モデルは VBScript のものとは異なりますか?
これらの質問のいくつかに対する答えは経験的に見つけることができますが、それらのいずれかが保証/文書化されているかどうかに興味があります.
回答の一部しか知らない場合でも投稿してください。またはさらに関連する問題があります。