gpt4 book ai didi

multithreading - 在线程中使用TADOQuery

转载 作者:行者123 更新时间:2023-12-03 18:59:32 25 4
gpt4 key购买 nike

我正在编写应用程序,连接到数据库,并重复(间隔1分钟)从数据库中读取数据。有点像RSS feed阅读器,但带有本地数据库。如果数据读取失败,我尝试重新建立连接。我已经使用放置在窗体上的TADOConnection和TADOQuery设计了它(因此没有动态创建)。我的目的是使应用程序从用户的角度保持“ Activity ”状态,因此我将连接和读取部分放置在一个线程中。问题是,如何最好地做到这一点?

我的设计如下所示:

  • 应用程序启动,创建TADOConnection和TADOQuery以及
  • 形式
  • 在单独的线程中打开连接(TADOConnection)
  • (如果已建立连接),暂停连接线程,启动表单上的计时器,该计时器定期恢复另一个线程以读取
  • 以进行数据读取
  • 如果读取线程成功,则什么也不发生,并且表单计时器继续运行,如果失败,则线程停止计时器并恢复连接线程

  • 是动态创建TADOConnection还是TADOQuery更好,还是没关系?最好使用例如线程或某些事物中的关键部分(我只能同时访问一个组件,并且只有一个线程)?

    谢谢你的建议

    最佳答案

    这个问题是相当主观的,可能主观上不足以封闭,但无论如何都是主观的。这就是为什么我要动态创建ADO对象的原因:

  • 将所有内容保持在一起:代码和用于访问代码的对象。使用在表单上创建的数据访问对象需要Thread对表单的内部运作有深入的了解,这绝不是一个好主意。
  • 比较安全,因为您无法从其他线程(包括VCL主线程)访问这些对象。当然,您没有计划将这些连接用于其他任何用途,也没有计划使用多个线程等,但是也许有一天您会忘记这些限制。
  • 面向 future 。您可能要使用其他项目中的相同线程。您可能要添加第二个线程,将其他一些数据添加到同一应用程序。
  • 我个人偏爱从代码动态创建数据访问对象。是的,是对主观问题的主观答案。
  • 关于multithreading - 在线程中使用TADOQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4993768/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com