不调用ActiveX控件Dispose(true)

时间:2011-01-20 12:06:59

标签: c# .net activex

我的C#ActiveX控件是IE 8中的hostet。我想在卸载控件时执行代码。

我尝试了以下内容:

...
public class ActiveXControl : Control 
{
    protected override void Dispose(bool disposing) 
    {
        if (disposing) 
        {
            // Cleanup
        }
    }
}
...

但处置总是假的(从终结者调来)。因为我需要访问托管对象,所以我不能使用那个。

如何在浏览器“卸载”控件时调用清理代码?

我找到了IOleObject :: Close方法,它由Control类实现,但是AFAIK却无法覆盖它的行为。

2 个答案:

答案 0 :(得分:1)

我还没有这样做,但是作为一个尝试的建议:可能会在网页的html中编写一些javascript,当页面导航时会在你的activeX控件上调用一个方法远离。您可以使用此方法调用清理代码。

答案 1 :(得分:1)

你可以覆盖OnHandleDestroyed(),当IE破坏控制窗口时调用。