您的位置:首页 > 移动开发 > Objective-C

制作windows services 服务的过程

2012-01-31 18:03 363 查看
什么是服务,概念就不落落了

用的vs 2008  

1,新建



默认的俩文件如图



制作安装包



这时候工程里会多一个projectinstaller.cs的文件,在这个工程文件里我们可以设置与服务相关的属性以及控制其启动方式等。点击projectinstall设计界面中的serviceinstaller1组件,在属性中我们可以做如下调整:

1)      Description:设置与服务有关的解释说明
2)      displayname:标识服务的友好名称
3)      servicename:设置服务的名称
4)      starttype:启动方式,如果想让服务安装完成后自动启动,可以设置成automatic
点击serviceprocessinstall1组件,在属性中我们将account设置成localsystem。

这样基本上服务就设置完毕了。接下来的工作就是写对应的代码。回到service1.cs文件中,默认有onstart和onstop属性,分别对应了服务启动和停止时执行的事件。

代码
private static string IHour = "0";

        private static string IMinute = "00";

        private static string Ekpaddr = "";

        public System.Timers.Timer aTimer = new System.Timers.Timer();

        public Service1()

        {

            InitializeComponent();

        }

 protected override void OnStart(string[] args)

        { // TODO: 在此处添加代码以启动服务。

            aTimer.Elapsed += new ElapsedEventHandler(OnTimer);

            aTimer.Interval = 60000; //每分钟

            aTimer.Enabled = true;

            aTimer.Start();

}

 protected override void OnStop()

        {

            // TODO: 在此处添加代码以执行停止服务所需的关闭操作。

            aTimer.Stop();

        }

设置服务启动后自动执行:

         前面讲到了projectinstall有一个starttype属性,用于设置服务器安装后是否自动启动,实践中发现这个方法并不都有效。往往是安装完服务后还需要手工去执行启动。修改的方法如下:

在projectinstaller.cs中添加如下代码:

 public partial class ProjectInstaller : Installer

    {

        public ProjectInstaller()

        {

            InitializeComponent();

            //this.Committed += new InstallEventHandler(ProjectInstaller_Committed);

            this.AfterInstall += new InstallEventHandler(ProjectInstaller_Committed);

        }

        private void ProjectInstaller_Committed(object sender, InstallEventArgs e)

        {

            System.ServiceProcess.ServiceController controller = new System.ServiceProcess.ServiceController("msdemailservice"); //参数为服务的名字

            controller.Start();

        }  

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息