看来我终于要在我的Delphi 2009程序中实现某种线程.如果只有一种方法可以做到这一点,我就会开始跑步.但我看到了几种可能性.
任何人都可以解释这些之间的差异以及为什么我选择一个而不是另一个.
Delphi中的TThread类
......还有其他人吗?
编辑:
我刚读了Gabr在2010年3月(第10期)Blaise Pascal杂志上发表的一篇精彩文章,名为"创造线索的四种方法".你必须订阅获取杂志的内容,所以根据版权,我不能在这里重现任何实质性的内容.
总之,Gabr描述了使用TThreads,直接Windows API调用,Andy的AsyncCalls和他自己的OmniThreadLibrary之间的区别.他的结论是:
"我不是说你必须选择除了经典的德尔福方式(TThread)以外的任何东西,但是你知道你拥有的选择仍然很好"
Mghie的答案非常透彻,暗示OmniThreadLibrary可能更可取.但是我仍然对每个人关于我(或任何人)应该如何为他们的应用选择他们的线程方法的意见感兴趣.
您可以添加到列表中:
.4.直接调用Windows API
.5. 米莎Charrett的 CSI分布式应用程序框架,通过LachlanG在答复建议.
结论:
我可能会选择OmniThreadLibrary.我喜欢加布尔的作品.我多年前使用过他的探查器GPProfile,而我现在正在使用他的GPStringHash,它实际上是OTL的一部分.
一旦Embarcadero将该功能添加到Delphi中,我唯一关心的可能就是升级它以使用64位或Unix/Mac处理.
我是熟悉Delphi中线程的新手.所以,我试图制作一个简单的查询应用程序,为数据库调用一点并花一点时间,所以我想提醒用户有一个后台进程,必须耐心等待.
我尝试了很多样品,但它们都不适合我,拜托,有人能告诉我一个可以使用的简单样品吗?
我知道我必须声明一种类型的TThread,使用Create和Override Execute ......等等.但是因为我失去了...
使用Delphi 7,SQL Server 2005和ADO,Windows XP sp3.-
谢谢.
我需要在Delphi中创建一个具有以下特征的线程:
我无法向线程发送消息,因为它没有窗口句柄.
我应该使用WaitForObject的某些变体吗?如果是这样,等待的是什么?如果没有,那么我如何保持线程等待,然后在新数据进入队列时唤醒它?
我读过Multithreading - Delphi Way,它似乎没有回答我的问题.也许 OmniThreadLibrary可以做我需要的事情; 我无法分辨,因为文档很少.我不太了解一般的线程,以确定库是否会在这里提供帮助以及如何使用它(甚至为什么要使用它而不是仅使用TThread后代).