![]() |
1
4
为什么你不只用一个有tidmsmtp和t list的目录来存储tidmessage,每次发送后都从列表中释放tidmessage,在这种情况下,你可以避免开销并保持简单。 如果您想发送200封电子邮件,那么如果您启动200个线程,那么您的应用程序将只对那些200个线程使用超过200MB的内存,更不用说启动应用程序中的那么多线程时可能会出现问题。 最后一行添加一个tlist,在其中临时存储准备好的tidmessages,并在线程中添加一个while循环,该循环将检查列表是否有要发送的消息,如果列表中有要从列表中获取、发送和删除的消息。 |
![]() |
2
1
从技术上讲,您可以在一个线程中调用connect(),然后在其他线程中调用send()。但是,您必须序列化send()的访问权限,否则发送线程可能会相互重叠并损坏SMTP通信。Dorin建议将所有的SMTP通信移动到一个带有队列的线程上,这是最好的选择。但是,队列本身需要以线程安全的方式进行访问,因此使用普通的tlist或tqueue本身就不够好。要么使用tthreadlist(或indy自己的tidthreadsafeList)而不是tlist,要么使用单独的tcriticalsection包装tqueue。 |
![]() |
Adriaan · 动态使indy使用TLSv1.2 7 年前 |
![]() |
Ingo · 如何使用Delphi Indy发布HTML表单2 7 年前 |
![]() |
toto · Delphi 7 Indy IdFTP未发送/接收数据 7 年前 |
|
Rodrigo Peetz · Delphi Pos始终返回0 7 年前 |