私のC#ActiveXコントロールはInternet Explorer 8でホストされています。コントロールがアンロードされたときにコードを実行します。ActiveXコントロールDispose(true)が呼び出されない
私は次のことを試してみました:
...
public class ActiveXControl : Control
{
protected override void Dispose(bool disposing)
{
if (disposing)
{
// Cleanup
}
}
}
...
しかし、処分が(ファイナライザから呼び出されます)オールウェイズfalseです。管理オブジェクトにアクセスする必要があるので、私はそれを使うことはできません。
ブラウザがコントロールを「アンロード」するときに、クリーンアップコードを呼び出す方法を教えてください。
IOleObject :: Closeメソッドが見つかりました。これはControlクラスによって実装されていますが、AFAIK therはその動作をオーバーライドできません。
一般に、IEブラウザ拡張(BHO、ツールバー、またはActiveXコントロール)を.NETに記述することはお勧めできません。 – EricLaw
@ Eric:これはよく知られている環境でのみ使用されます。私の特別なケースでは、私はどんなdiasdvantagesも考えることができません。多分それについての記事がありますか? –
VisibleChangedイベントは、ページから移動すると発生することがわかりました。 他の解決策はまだ見つかりましたか? – mbeckish