1

クラス ライブラリを STA にして、VBScript の CreateObject で使用するにはどうすればよいですか? 次のことを行うと(以下を参照してください)、プロセスが終了/破棄されることを確認したいと思います。

Set MyObject = Nothing ' Dispose

これは可能ですか?上記のステートメントを実行すると、オブジェクトが破棄されず、デストラクタが実行されないことがわかりました。お知らせ下さい。

以下は、私のクラスのスナップショットです (COM 可視とマークされ、COM Interop に登録されています):

[Guid("")]
[ClassInterface()]
[ProgID()]
[ComVisible(true)]
public class MyClass {}

COM から何も設定しない場合、別の属性でマークするか、別の設定を作成して破棄する必要がありますか?

4

1 に答える 1

2

これは、クラス ライブラリ STA のマーク付けとは関係ありません。.NET は決定論的破棄をサポートしていないため、参照を Nothing に設定したときに何かを呼び出す方法はありません。

.NET に最も近い構造は、IDisposbale手動で呼び出す必要があるインターフェイスです。以下のように:

MyObject.Dispose
Set MyObject= Nothing

C# オブジェクトにはデストラクターがなく、ファイナライザーがあることに注意してください。ファイナライザーは、オブジェクトが参照されなくなったときよりも少し遅れて、オブジェクトがガベージ コレクションされるときに実行されます。

于 2012-06-16T17:30:50.180 に答える