2014-03-26 32 views
2

我有一個VB6應用程序,它需要使用.NET類的一些功能。我爲.NET類創建了一個.tlb(類型庫),VB6應用程序調用它。VB6使用VB.NET類 - 它很慢

問題是它很慢。我循環數據庫中的每個記錄,並在每個循環的.TLB中調用功能。

我的問題是:這種方法本身就很慢嗎?這是什麼原因?

.NET中的代碼被複制到VB6中(我知道這不是很好的做法 - 我沒有這麼做)。 VB6代碼用於使用VB6類,速度更快。這是我得出的結論,即使用.NET類太慢。

回答

3

非託管到託管代碼轉換可能會很慢,因爲您傳遞的任何數據結構都必須編組。

例如,如果傳遞字符串,則整個字符串將被複制到託管堆上的新.NET字符串對象中。

如果您傳遞對象的引用,則在.NET端會生成RCW(運行時可調用的包裝器)。 (從.NET調用這些對象可能會導致在另一個方向再次封送開銷。)

有關更多詳細信息,請參閱MSDN上的Interop Marshaling主題。

+0

感謝您的鏈接。 +1。 – w0051977

+0

我以爲我做到了。我現在已經完成了。 – w0051977