三层结构,客户端运行时,在线程中执行SQL语句为什么会有"尚末调用CoInitialize"这样的错误,这是什么原因,不在线程中可以

解决方案 »

  1.   

    procedure TYourThread.Execute
    begin
      OleCheck(CoInitialize(nil));
      try
        // Your Code
      finally
        CoUninitialize;
      end;
    end;
      

  2.   

    COM 接口指针不能直接在线程(套间)之间传递,需要进行列集(Marshaling)。在主线程中用 CoMarshalInterThreadInterfaceInStream 把 COM 接口指针写入 Stream,然后在分线程中用 CoGetInterfaceAndReleaseStream 从 Stream 中获取接口指针,该接口指针
    就能在分线程中使用了。关于以上两个函数的具体信息,可以参考 MSDN。 相关的例子 MSDN 上应该也能找到。