3

已经在Evil Exchange上问过了,但一如既往地没有帮助。我今天遇到了这个问题:

使用 IntraWeb 创建独立的 Web 应用程序时,当我尝试在浏览器中从我的应用程序中测试会话时,我在 IDE 中遇到此异常:

第一次机会例外,$7C812A6B。带有消息“尚未调用 CoInitialize”的异常类 EOleSysError。处理 WebContactManager.exe (1112)

如果我在 IDE 异常对话框中单击“继续”,浏览器本身只会显示:

200 好

...而不是我的主窗体上的控件。

当我将 ADO 替换为其他数据库组件(如 dbExpress 或 BDE)时,似乎不会出现此错误。

这个错误告诉我什么,我该如何解决?

(请注意,我使用的是 D2007 内置的库存“VCL for the Web”IntraWeb 组件)。

提前感谢您的任何帮助!

4

2 回答 2

9

您引用的链接中提供的“解决方案”基本上是错误的或至少是不完整的。只有将 ServerController.ComInitialization 设置为 ciMultiThreaded 为 true IW 才能保证每个线程都能正确初始化 COM。(例如考虑 Ajax 回调)

如果您创建自己的自定义线程,那么您将不得不自己为该线程调用 CoInitialize - 因为 Intraweb 不知道您的自定义线程。

于 2009-07-16T04:48:12.750 回答
3

刚刚在这里找到了答案:

我找到了一个更优雅的解决方案,因为整个问题源于使用 Intraweb,我宁愿让 Intraweb 为我初始化 com。这很好地解决了它。

将 MS SQL DbExpress 驱动程序或 ADO 驱动程序与 Intraweb 一起使用时,必须将 ServerController 中的 ComInitialization 属性设置为“ciMultiThreaded”。

这将消除“尚未调用 CoInitialize”错误。

于 2009-07-16T00:39:06.290 回答