Delphi(DataSnap)我是否需要在身份验证上进行线程化?

时间:2012-11-16 02:02:16

标签: delphi datasnap

我很好奇如何处理这个问题;我目前有一个DataSnap服务器设置,其中有一个TDSAuthenticationManager类来管理身份验证。

如果身份验证失败,我是否可以直接写入表单TMemo或类似的记录目的?观察这个的最佳方法是什么?

我需要线程吗?

欢呼阅读, 阿德里安

1 个答案:

答案 0 :(得分:3)

是的,您需要同步,因为Datasnap事件在不同线程的上下文中运行,并且您可能知道,UI编程仅限于主线程。

因此,如果您想在UI中显示某些内容,则必须注意如何操作。

另一方面,如果你想 log 到一个文件,你不需要同步,但你必须要小心,因为两个不同的线程可能会尝试记录在同一时间。

我要评估的选项是:

  • 使用Critical Section保护对日志文件的访问,从而避免使用锁定进行多线程访问。一次只有一个线程可以访问该文件,所有其他感兴趣的线程都必须等待。
  • 创建一个新的日志记录类,通过简单地将日志消息添加到内存中的(支持多线程的)队列,并运行它自己的线程来编写它们,从中可以获取日志请求的全局实例当队列中有消息时到文件。

由于服务器往往在生产环境中作为服务运行,我会选择后者。