zoukankan      html  css  js  c++  java
  • 用Delphi编写Windows服务程序(Winnt Service Application)

    Windows的服务(Services)是一个比较实用的功能,它可以让你的程序在Windows未进行登录的时候就开始运行,且不受用户注销的影响,也不容易被用户误关闭。
    但是编写服务也许不是一件容易的事情,幸好Delphi给我们提供了一个模板,可以很容易的编写一个标准的Windows服务程序。
    首先,在Delphi内新建一个Service Application。
    此时,Delphi已经给我们建好了一个Service程序的框架,我们只需要把我们的代码加到合适的位置就行了。
    一般情况下,Service内需要一个线程来不断的工作,也许定时器也可以,但线程工作起来更好。
    Delphi会生成一个可视化的Service容器,你可以放一些必要的控件在它上面(特别是DataSetProvider组件),而且由于它是服务程序类,本身是非可视的(没有界面显示的),因此不应在上面安放Edit之类的控件,服务只是应该做处理工作的,显示界面应该由其它的标准窗体或其他程序来完成。Service控件的DisplayName属性是显示在管理工具->服务的左边的名称的内容,而Name属性则是服务名称,当你用命令提示符来启动、停止服务时,就需要用到。
    在事件OnStart内,我们应该完成启动线程之类的工作。
    如:

     

       在OnStop事件内,我们应该停止线程,并释放打开的资源,需要注意的是当你停止线程时,一般用Terminate方法,在线程内用Terminated属性来判断是否需要结束线程,而由于是线程,和主进程是时间运行的,有可能你刚好在进行Terminate时,线程已经刚进行过Terminated判断,正在进行比较费时的处理工作,而此时主进程立即执行Terminate后就进行释放资源的工作时,会造成线程执行错误,因此应该等到线程真正的正确停止后,主进程才能进行资源释放工作。
    如:

     
    谢祥选【小宇飞刀(xieyunc)】
  • 相关阅读:
    UBUntu 软件 源配置方法
    oracle 11G direct path read 非常美也非常伤人
    iOS多线程编程(四)------ GCD(Grand Central Dispatch)
    Yii之路(第八)
    UVA
    我喜欢的网易云音乐
    LeetCode_DP_Word Break II
    管理Java垃圾回收的五个建议
    const成员函数总结
    算法之经典排序算法小归纳
  • 原文地址:https://www.cnblogs.com/xieyunc/p/9126696.html
Copyright © 2011-2022 走看看