C# 创建服务项目+发布+卸载服务

右键创建一个服务项目

把默认里面有个Server1.cs改名,改成自己想要的名字

改名后,双击,右键新增安装程序

 然后点击安装程序,修改第二个控件的属性

 这里主要改启动模式,自动启动,开机启动,手动,和控件名字

 然后再改左边那个,这里主要改名字和服务运行的账号

 运行账号默认是USER,可以改成本地账号或者其他,这个USER后面重点说下

然后新建服务安装的bat文件:

这里有个注意点:如果程序是framework4.0 和以上的,需要用v4.0xxx,4.0以下的用v2.0xxx

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe E:\邮件接口\EmailData\EmailServer.exe
Net Start EmailServer
sc config EmailServer start= auto
pause

卸载服务的bat文件

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u E:\邮件接口\EmailData\EmailServer.exe
pause

生成后,点bat就可以安装服务了

 这里重点说下,USER模式下的安装遇到的坑,

USER模式下,点击安装会弹出让你输入管理员账号密码,其他模式则不需要,但是输入账号密码的时候需要主意userName=    .\username   ,否则就算密码账号正确,也提示错误

 

最后一点关于服务内部的逻辑:

内置3个事件:初始化、服务启动、服务关闭,这就够了,核心逻辑就是,初始化的时候做一个定时器,服务启动的时候启动定时器,结束的时候关闭定时器。

这时候我部署的服务器不知道遇到了什么问题,定时器不执行,然后我就用多线程+while死循环做了一个类似定时器的东西,代码如下:

using EmailServer.Models;
using OpenPop.Mime;
using OpenPop.Pop3;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace EmailServer
{
    public partial class EmailServer : ServiceBase
    {
        bool isRun = false;
        Thread thread = null;
        public EmailServer()
        {
            InitializeComponent();
            //初始化一个线程
            thread = new Thread(new ThreadStart(Exec));
        }

        protected override void OnStart(string[] args)
        {
            isRun = true;
            //服务启动,线程启动
            thread.Start();

        }

        protected override void OnStop()
        {
            isRun = false;
            //服务关闭,线程注销
            thread.Abort();
        }

        private void Exec()
        {
            while (isRun)
            {
               
                //线程内部的逻辑,执行一次,停多少秒,继续执行,实现了定时器的功能
                Thread.Sleep(1000 * int.Parse(ConfigurationManager.AppSettings["Timer"]));
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值