我如何决定是否应该在TService应用程序中使用TServiceThread或TThread?

Sam*_*Sam 0 delphi service multithreading

在阅读有关如何创建服务应用程序的一些材料(如此)时,为每个服务请求生成一个单独的工作线程(因为我的服务请求可能需要冗长的数据库操作),所以我遇到了对TThread等的引用对TServiceThread的引用.现在我很困惑.我应该使用哪一个?为什么?如果你想要超级有用,并希望分享你的专业知识,如何或者你知道一个非常好的链接(强调该链接另一边的内容质量)那么这将有助于解决这个提问者的情况.不管怎么说,还是要谢谢你.

Dav*_*nan 7

TServiceThread是实现主服务线程的线程.它仅用于此目的,您不应从中派生您的工作线程TServiceThread.对于工作线程,派生自TThread.

文件可能是有点朦胧,但它确实点在正确的方向:

TServiceThread表示与特定服务(TService对象)关联的线程.

TServiceThread是与服务关联的线程.每个服务应用程序都有一个或多个服务对象,每个服务对象都有自己的专用线程.TServiceThread实例表示这些线程.

并看看实施情况 TServiceThread.Execute.它包含实现服务主线程所需的所有逻辑.这显然不适合工人线程.

  • +1。我是否可以建议您强调以“每个服务应用程序”开头的句子(也可能是其后的句子)?这两个似乎是最相关的。(文档的措辞有点模糊。) (2认同)
  • 是的,我认为文档非常薄弱.事实上,我不确定为什么TServiceThread甚至是公共课. (2认同)