2012-04-23 90 views
0

我有一个ASP.NET应用程序,我想使用VB6组件。我知道我必须使用ASPCOMPAT标签。有什么需要做的VB6代码,以使其线程安全?.NET使用VB6 COM组件

我已经运行了一些测试,它似乎工作完美,但是我已阅读关于有问题的开发人员的评论,但评论没有详细阐述。是否需要对VB6代码进行任何操作以确保它是线程安全的?这看起来太简单了。此外,我还将ASPCONFIG标记放置在一个页面上 - 即使用COM组件的页面。

我已经使用tlbimport工具在Visual Studio中导入组件,该工具将.NETwrapper放置在COM对象的周围。

回答

1

VB6代码的线程安全性在很大程度上取决于它的写法。编写COM的一个特殊“子集”是为了隐藏VB6时代涉及基于COM开发的大部分硬件管道,部分隐藏的内容是线程管理(多线程公寓,单线程公寓等)和VB6运行时在底层处理线程。因此,如果你遵守规则,线程安全或多或少都会为你照顾。在大多数情况下,如果您试图深入研究独立的线程管理,例如调用Windows API函数以在VB6/COM“沙箱”之外创建线程,那么您正在玩火,并且没有足够的保护。 NET方面将使其“线程安全”。这样做打破了VB6故意试图隐藏的所有内部线程管理/编组/ /代码。这几乎是非托管(VB6/COM)和托管代码(.NET)世界之间差异的本质。

希望有所帮助。

+0

谢谢。 VB6 DLL使用类和无线程相对较好地构建。因此,根据你所说的,不应该有问题。我只想在ASP.NET应用程序中重用一个函数。 – w0051977 2012-04-24 12:43:40