我创建了一个纯净的C# dll,并标记为COM互操作。该dll是一个普通用户窗体,没有功能,这是一个实验。
我注册了该DLL并打开了ActiveX测试容器,并实例化我的COM对象。它出现在测试容器中,我可以查看控件的公开方法 - 这些是默认方法,不是我创建的。
然后我从ActiveX测试容器退出,我注意到测试容器仍然在任务管理器中运行,我必须手动杀死该进程。这让我相信测试容器仍然持有对我用于COM互操作的C# dll的引用。
设计者.cs中的默认处理函数是:
我注册了该DLL并打开了ActiveX测试容器,并实例化我的COM对象。它出现在测试容器中,我可以查看控件的公开方法 - 这些是默认方法,不是我创建的。
然后我从ActiveX测试容器退出,我注意到测试容器仍然在任务管理器中运行,我必须手动杀死该进程。这让我相信测试容器仍然持有对我用于COM互操作的C# dll的引用。
设计者.cs中的默认处理函数是:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
当我使用测试容器与Quick time一起使用时,它按预期调用了Quick time。当我关闭测试容器时,它正确地处置并且没有留下任务管理器中的痕迹。
问题是:在我的处置方法中必须做什么特定的事情吗?此外,这可能与此无关,但当我创建一个测试项目并启动我的C#控件,然后单击关闭按钮时,它会关闭我的测试表单,但测试应用程序仍在以调试模式运行 - 运行按钮被禁用。