gpt4 book ai didi

multithreading - 在Delphi中,TDataSet线程安全吗?

转载 作者:行者123 更新时间:2023-12-03 14:38:52 24 4
gpt4 key购买 nike

我希望能够在自己的线程中异步打开 TDataSet,以便主 VCL 线程可以继续执行,直到完成,然后让主 VCL 线程从该 TDataSet 读取数据。我做了一些实验,并遇到了一些非常奇怪的情况,所以我想知道以前是否有人这样做过。

我见过一些示例应用程序,其中 TDataSet 在单独的线程中创建,打开它,然后从中读取数据,但这都是在单独的线程中完成的。我想知道在另一个线程打开数据源后,从主 VCL 线程读取 TDataSet 是否安全。

我正在 Delphi 7 中进行 Win32 编程,使用 DAC for MySQL 中的 TmySQLQuery作为我的 TDataSet 后代。

最佳答案

如果您只想在自己的线程中使用数据集,则可以使用同步与主线程进行通信以进行任何 VCL/UI 更新,就像与任何其他组件一样。
或者,更好的是,您可以使用自己的消息系统实现主线程和工作线程之间的通信。

在此处检查 Hallvard 的线程解决方案:
http://hallvards.blogspot.com/2008/03/tdm6-knitting-your-own-threads.html

或另一个:
http://dn.codegear.com/article/22411

有关同步及其低效率的一些解释:
http://www.eonclash.com/Tutorials/Multithreading/MartinHarvey1.1/Ch3.html

关于multithreading - 在Delphi中,TDataSet线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/78475/

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