1,vc的NT服务程序应该都有个main函数,NT服务启动后是定时运行main函数还是以事件触发的方式运行?2,如果要在无界面的NT服务里加定时器,应该怎么加啊?3,在NT服务里是否可以在其他线程向主线程发送消息?

解决方案 »

  1.   

    1.nt服务启动时就执行一遍main函数,main退出后,服务就停止了。一般服务内部有一循环,此循环不断检测系统是否向服务发出了退出信号,如果存在退出信号即跳出循环停止服务,否则就一直在循环内部执行。一般服务可以向外部提供一个COM接口以提供服务。2.要在服务里面加定时器比较困难,因为一般服务主程序没有消息循环,即使SetTimer后也无法接受消息。可以尝试构造一个UI线程,并在线程内部加一个消息循环。3.由于主线程没有消息循环,子线程向主线程发消息没有意义,发了也接受不到。这里只是简单说说,做服务其实很复杂,建议看看现有服务的源代码,你就明白了。