已经在Evil Exchange上被问过,但一如既往没有帮助。我今天遇到这个问题:
使用IntraWeb创建独立的Web应用程序时,当我尝试在浏览器中测试我的应用程序中的会话时,我在IDE中遇到此异常:
$ 7C812A6B的首次机会异常。 异常类EOleSysError用 消息'CoInitialize还没有 被称为”。处理WebContactManager.exe (1112)
如果我在IDE异常对话框中单击“继续”,则浏览器本身只显示:
200 OK
...而不是我主表单上的控件。
当我将ADO替换为其他数据库组件(如dbExpress或BDE)时,似乎不会发生此错误。
这个错误告诉我什么,我该如何解决?
(注意我使用的是“VCL for the Web”IntraWeb组件,内置D2007)。
提前感谢您提供的任何帮助!
答案 0 :(得分:8)
the link you quoted中提供的“解决方案”基本上是错误的,或者至少是不完整的。只有将ServerController.ComInitialization设置为ciMultiThreaded为true,IW才会保证每个线程都能正确初始化COM。 (例如,考虑Ajax回调)
如果您创建自己的自定义线程,那么您必须自己为该线程调用CoInitialize - 因为Intraweb不知道您的自定义线程。
答案 1 :(得分:3)
刚刚找到了这个here的答案:
我找到了一个更优雅的解决方案 整个问题源于使用 Intraweb,我宁愿得到Intraweb 为我初始化com。对此进行排序 很好。
使用MS SQL DbExpress时 带有Intraweb的驱动程序或ADO驱动程序, 您必须设置ComInitialization ServerController中的属性 “ciMultiThreaded”。
这将消除“CoInitialize 没有被称为“错误。