代码之家  ›  专栏  ›  技术社区  ›  M Schenkel

确定在线程中使用TADOConnection吗

  •  6
  • M Schenkel  · 技术社区  · 15 年前

    我已经创建了一个TCPip服务器应用程序。应用程序有一个全局TADOConnection。这个全局ado连接既用于主线程查询,也用于线程进程。

    这样可以吗?ADOConnection是否有内置的机制来同时处理多个查询?

    我的应用程序在测试环境中工作(2-5个连接)。但是部署在生产环境中,在连接到ADOConnection的TADOQuery设置为opened时,我遇到了“无法解释的”访问冲突。

    2 回复  |  直到 15 年前
        1
  •  8
  •   Vic Adam    15 年前

    每个线程都需要有自己的连接对象。以下链接提供了详细信息: http://delphi.about.com/od/kbthread/a/query_threading.htm

    文章中的一些要点:

    2] 你呢 不能

        2
  •  7
  •   Community CDub    8 年前

    @谢克尔先生,看到这个问题了吗 Is Delphi’s TADOConnection thread-safe? . 每个线程都需要自己的连接,因为ADO是一种基于COM的技术,它使用单元线程对象。

    procedure TMyThread.Execute;
    begin
       CoInitialize(nil);
       try
         try
           // create a connection here
         except
         end;
       finally
         CoUnInitialize;
       end;
    end;