关于系统服务程序的编写

就是用向导建立一个Service   Application,然后在TService1模块框中放入Timer,双击Timer,加入下面的代码,ok!  
   
  void   __fastcall   TService1::Timer1Timer(TObject   *Sender)  
  {  
          ShowMessage("hello");  
  }  
  //-----------------Top

楼上的,你说的这个,估计都知道啊!但是你试了吗?按照你说的,把工程编译一下,然后把Service1.exe安装为服务,并启动它;那个Timer1能不停的显示出来“Hello”吗?我试了,没动静啊! 

弄了半天,找到了一些眉目;在服务的OnExecute()方法里面写代码,这段代码可以被执行,但是只执行了一次;需要写成一个while循环才能让服务一直运行,否则服务启动之后就自动停止了;如下:  
  while(!Terminated)  
    {  
          TIniFile   *MyIni=NULL;  
          try  
          {  
                  MyIni=new   TIniFile("c://Service1.Log");  
                  int   C=MyIni->ReadInteger("ALLCount","Count",0);  
                  MyIni->WriteInteger("ALLCount","Count",++C);  
                  MyIni->WriteInteger("ALLCount"+IntToStr(C),"Count",++C);  
   
          }catch(...){}  
   
          if   (MyIni)  
          {  
                  delete   MyIni;  
          }  
          //Sleep(2000);  
    }  
  不过这里面有个问题,  
  问题一、如果将Sleep函数注释掉,则这个服务启动之后占用CPU特别高,加上之后,对CPU的占用就特别小了,不知道为什么?  
  问题二、如果我想在这个服务里面启动一个线程,并且想让这个线程一直在运行,以便于一直做一些事情,该如何做?  

---------------------------------------------------------------------------------------------------------------------------------------

10 楼shadowstar(CodeFast for Delphi & C++Builder)回复于 2005-11-09 17:18:32 得分 100

晕,没想到这里的问题。  
   
  一、OnExecute里面的代码应该是:  
   
  while   (!Terminate)  
          ServiceThread->ProcessRequests(true);  
   
   
  二、做一个自己的线程:  
   
  class   TMyThread   :   public   TThread  
  {  
  public:  
          TMyThread(bool   CreateSuspended)  
          {  
                  FreeOnTerminate   =   true;  
          }  
          void   __fastcall   Execute()  
          {  
                  //   TODO:   添加你要执行的代码  
          }  
  }  
   
  Service.OnCreate事件里:  
   
  FMyThread   =   new   TMyThread(false);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值