VB6使用VB.NET类 - 它很慢

时间:2014-03-26 22:30:52

标签: vb.net vb6

我有一个VB6应用程序,它需要使用.NET类中的某些功能。我为.NET类创建了一个.tlb(类型库),VB6应用程序调用它。

问题是它很慢。我遍历数据库中的每条记录,并为每个循环调用.TLB中的功能。

我的问题是:这种方法本身就很慢吗?这是什么原因?

.NET中的代码在VB6中是重复的(我知道这不是一个好习惯 - 我没做过)。 VB6代码用于使用VB6类,速度更快。这就是我得出的结论,使用.NET类太慢了。

1 个答案:

答案 0 :(得分:3)

非托管到托管代码转换可能很慢,因为您传递的任何数据结构都必须进行封送处理。

例如,如果传递字符串,则整个字符串将复制到托管堆上的新.NET字符串对象中。

如果传递对象的引用,则在.NET端生成RCW(运行时可调用包装器)。 (从.NET调用这些对象可能会在另一个方向上再次导致编组开销。)

有关详细信息,请参阅MSDN上的Interop Marshaling主题。