RSS
热门关键字:  数据挖掘  数据仓库  人工智能  搜索引擎  数据挖掘导论

用Delphi编写Win2000服务程序

来源: 作者:unkonwn 时间:2005-08-10 点击:

Delphi编写Win2000服务程序

 

摘要:本文介绍用Delphi TDataModule,这意味着我们可以加入大量的VCL控件,实现丰富的功能。此外,我们还可以处理OnStartOnPauseOnStopOnContinueOnCreateOnShutDown等事件。其中需要说明的是:OnStop表示该服务被停止;而OnShutDown表示该ServiceApplication停止运行,这意味着其他服务也被终止了;两者含义是不一样的。

数据挖掘研究院

前面讲过,ServiceApplication通过调用StartServiceCtrlDispatcher来启动各个服务。StartServiceCtrlDispatcher启动TService的入口,该入库就是TService.MainTService.Main首先注册该服务,然后调用TService.DoStartTService.DoStart创建一个内部TServiceThread成员对象,这是一个线程对象;考察TServiceThread.Execute可以得知,当我们处理的TService1. OnExecute,那么TService会把所有的请求委托给该TServiceThread成员对象处理,该对象以默认的方式处理所有的请求。 数据挖掘实验室

TService. ServiceExecuteTService的主体内容。一个服务要正常运行,除了需要处理它要关注的目标(比如监听某个端口、执行某个任务等)外,还要响应外部命令/请求:比如终止、暂停、恢复该服务。因此可以考虑创建一个专门的线程来完成该任务,而在ServiceExecute中处理外面命令/请求。因此代码如下:

       while not Terminated do begin

              ServiceThread.ProcessRequests(False);

数据挖掘研究院

       end; 数据挖掘实验室

当然,也可以在OnExecute中处理某些任务,如监听某个端口,但是这常常会导致该Service不能及时响应Stop/Pause等请求。当OnExecute执行完了,该服务实际上就完成了任务要结束了(terminate)。

  数据挖掘研究院

参考资料: 数据挖掘研究院

MSDN,Delphi VCL源代码,Delphi帮助文档

数据挖掘研究院

 

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
匿名?