0

我有一个 ASP.NET 应用程序,我想使用一个 VB6 组件。我知道我必须使用 ASPCOMPAT 标签。是否需要对 VB6 代码执行任何操作以使其线程安全?

我已经运行了一些测试,它似乎工作得很好,但是我在这里阅读了关于遇到问题的开发人员的评论,但没有详细说明这些评论。是否需要对 VB6 代码执行任何操作以确保它是线程安全的?这似乎太简单了。此外,我只将 ASPCONFIG 标记放在一个页面上 - 使用 COM 组件的页面。

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

4

1 回答 1

1

VB6 代码的线程安全很大程度上取决于它是如何编写的。COM 的一个特殊“子集”被编写来隐藏 VB6 时代基于 COM 的开发所涉及的大部分硬管道,其中隐藏的部分是线程管理(多线程单元、单线程单元等)和VB6 运行时在后台处理线程。结果,如果您遵守规则,线程安全或多或少会为您处理好。

在大多数情况下,如果您试图深入研究独立的线程管理,例如调用 Windows API 函数在 VB6/COM“沙箱”之外创建线程,那么您就是在玩火,而且 .NET 方面的任何保护都不会它“线程安全”。这样做破坏了 VB6 故意试图隐藏的所有内部线程管理/编组/等代码。这几乎就是非托管(VB6/COM)和托管代码(.NET)世界之间区别的本质。

希望有帮助。

于 2012-04-23T22:43:37.040 回答