我是靠谱客的博主 大胆星星,最近开发中收集的这篇文章主要介绍.net Service定时启动,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.创建WindowsService

2.Service1添加安装程序

     设计->右键->添加安装程序;

3.ProjectInstaller设置属性

     serviceInstaller1  

          Modifiers:public;

          ServiceName:Service1(你的服务名称);

          StartType:Automatic;

     serviceProcessInstaller1

          Account:LocalSystem;(默认User的情况下Start.bat启动后需要输入账号密码)

4.Service1代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Timers;

namespace Service1
{
    public partial class Service1 : ServiceBase
    {
        #region 属性
        private System.Timers.Timer timer;
        private BackgroundWorker worker;

        #endregion

        public Service1()
        {
            InitializeComponent();
        }

        /// 启动服务
        /// <summary>
        /// 启动服务
        /// </summary>
        /// <param name="args"></param>
        protected override void OnStart(string[] args)
        {
            Init();
        }

        /// 初始化服务
        /// <summary>
        /// 初始化服务
        /// </summary>
        private void Init()
        {
            worker = new BackgroundWorker();
            worker.DoWork+=new DoWorkEventHandler(worker_DoWork);
            timer = new System.Timers.Timer();
            timer.Interval = 60 * 1000;//1分钟执行一次//1000*60*60 1小时//1000*60*60*24 1天
            timer.Elapsed+=new ElapsedEventHandler(timer_Elapsed);
            timer.Enabled = false;
            timer.Start();
        }

        /// 定时执行
        /// <summary>
        /// 定时执行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        void timer_Elapsed(object sender,ElapsedEventArgs args)
        {
            if (!worker.IsBusy)
            {
                worker.RunWorkerAsync();
            }
        }

        /// 后台执行进程
        /// <summary>
        /// 后台执行进程
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        void worker_DoWork(object sender, DoWorkEventArgs args)
        {
            try
            {
                MainFunction();
            }
            catch (Exception ex)
            {
            }
        }

        private void MainFunction()
        {
            //主要代码
        }

        /// 停止服务
        /// <summary>
        /// 停止服务
        /// </summary>
        protected override void OnStop()
        {
            timer.Stop();
        }
    }
}

5.配置文件  

     在项目中右键->添加新建项目->应用程序配置文件,默认名称App.config

   在文件中添加程序所需的框架,<ConnectionStrings>中添加数据库连接,<appSettings>中添加服务器IP

   (如果程序涉及调用SAP接口,需要在<appSettings>中添加destination

6.调试

     Debug文件夹中启动start.bat,然后在vs中工具->附加到进程 找到服务名,添加后程序会执行到断点处,就可以调试了;

     注意服务名是Service.exe,不是Service.vshost.exe。如果没有找到服务名,勾选显示所有用户的进程,就可以找到了;

   (如果需要部署到服务器,只需要将Debug文件夹拷到相应的文件夹下,启动start.bat即可)








此外放上start.batstop.bat的代码:

   start.bat

@ECHO off
cls
color 0A
ECHO 安装APP SERVER...
C:WINDOWSMicrosoft.NETFrameworkv2.0.50727InstallUtil.EXE Service1.exe
net start Service1
pause
EXIT

    stop.bat

@ECHO off
cls
color 0A
ECHO 安装APP SERVER...
net stop Service1
C:WINDOWSMicrosoft.NETFrameworkv2.0.50727InstallUtil.EXE /u Service1.exe
pause
EXIT












最后

以上就是大胆星星为你收集整理的.net Service定时启动的全部内容,希望文章能够帮你解决.net Service定时启动所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部