【发布时间】:2012-08-14 17:25:54
【问题描述】:
我有一个为 COM 互操作注册的简单 C# 库。我已在我的 vb6 应用程序中添加了对此的参考。我运行了我的 vb 应用程序,一切正常。我想知道这是如何工作的。我检查了任务管理器,在进程中看到了 VB6.exe,但我看不到任何与 .net 相关的内容。
代码:vb6
Dim a As CsharpdllForVBHack.ComAdder
Private Sub Command1_Click()
Set a = New CsharpdllForVBHack.ComAdder
a.Add 1, 4
End Sub
代码:C#.net
[ComVisible(true)]
public class ComAdder
{
[ComVisible(true)]
public void add (int a,int b)
{
TestForm testForm = new TestForm(a+b);
testForm.ShowDialog();
}
}
我还想知道,一旦我完成了这个 com 对象的处理,我将如何处理
我们注意到,每次单击按钮并关闭表单时,即使添加 set a=Nothing,使用的内存也会增加 100 kb
【问题讨论】:
-
它是一个进程内的com组件,所以它被加载到VB6 exe的进程中;它不会在任何地方显示为单独的进程,看看@msdn.microsoft.com/en-us/library/xk1120c3(v=vs.100).aspx
-
我们注意到,每次单击按钮并关闭表单时,即使添加 set a= Nothing,所使用的内存也会增加 100 kb
-
你无法从一次内存增加中看出什么。各种库会以块的形式分配内存,它会随着最小化和恢复窗口等简单的操作而上升和下降。