我有一个ASP.NET应用程序,我想使用VB6组件。我知道我必须使用ASPCOMPAT标签。是否需要对VB6代码进行任何操作才能使其成为线程安全的?
我已经运行了一些测试,它似乎完美无缺,但我在这里已经阅读了有关遇到问题的开发人员的评论,但评论没有详细说明。是否有任何需要对VB6代码进行的操作以确保它是线程安全的?这看起来太简单了。另外,我只将ASPCONFIG标记放在一个页面上 - 使用COM组件的页面。
我使用tlbimport工具在Visual Studio中导入了组件,该工具将.NETwrapper放在COM对象周围。
答案 0 :(得分:1)
VB6代码的线程安全性在很大程度上取决于它的编写方式。编写COM的一个特殊“子集”是为了隐藏VB6中基于COM的开发中涉及的大部分硬管道,隐藏的部分内容是线程管理(多线程公寓,单线程公寓等)和VB6运行时处理引擎下的线程。因此,如果您遵守规则,线程安全性或多或少会为您解决。
在大多数情况下,如果你试图深入研究独立的线程管理,例如调用Windows API函数来创建VB6 / COM“沙箱”之外的线程,那么你就是在玩火,并且没有任何来自.NET的保护。方将使其“线程安全”。这样做打破了VB6故意试图隐藏的所有内部线程管理/编组/等代码。这几乎是非托管(VB6 / COM)和托管代码(.NET)世界之间差异的本质。
希望有所帮助。