C#创建Windows服务与安装-图解

1.创建windows服务项目

2.右键点击Service1.cs,查看代码, 用于编写操作逻辑代码

3.代码中OnStart用于执行服务事件

  public partial class Service1 : ServiceBase
    {
        string logFilePath = "";
        LogHelper logHelper;
        WendyWuBll bll = new WendyWuBll();
        public Service1()
        {
            logFilePath = ConfigurationManager.AppSettings["syncFeefoDataLog"];
            logHelper = new LogHelper(logFilePath);
            InitializeComponent();
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
        }
        void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            try
            {
                Exception ex = e.ExceptionObject as Exception;
                logHelper.WriteLine("来自“MonitorOnServer”的全局异常。" + ex.Message + "详细信息如下:"
                                    + Environment.NewLine + "[InnerException]" + ex.InnerException
                                    + Environment.NewLine + "[Source]" + ex.Source
                                    + Environment.NewLine + "[TargetSite]" + ex.TargetSite
                                    + Environment.NewLine + "[StackTrace]" + ex.StackTrace);
            }
            catch { }
        }

        private delegate void NewTaskDelegate();
        protected override void OnStart(string[] args)
        {
            EventLog.WriteEntry("同步feefo数据服务启动");  //在系统事件查看器里的应用程序事件里来源的描述
            logHelper.WriteLine("服务启动");       //自定义日志
            logHelper.WriteLine("服务版本1.1");
            NewTaskDelegate task = bll.IntData;
            //使用BeginInvoke方法异步调用newTask方法,并传入2000作为newTask的参数
            IAsyncResult asyncResult = task.BeginInvoke( null, null);
            System.Timers.Timer t = new System.Timers.Timer();
            t.Interval = 1000;
            t.Elapsed+=new System.Timers.ElapsedEventHandler(ChkSrv);//到达时间时候执行事件
            t.AutoReset = true;//设置执行一次(false)还是一直执行(true)
            t.Enabled = true;//是否执行system.Timers.Timer.ElapseEventHander事件
            bll.SetServiceStatus("WendyWuAutoService", "Running");
        }

        private void ChkSrv(object sender, System.Timers.ElapsedEventArgs e)
        {
            int intHour = e.SignalTime.Hour;
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;
            if ((intMinute == 00 && intSecond == 00) || (intMinute == 30 && intSecond == 00))//定时设置,判断每天八点执行
            {

                try
                {
                    logHelper.WriteLine("开始从feefo同步数据");
                    System.Timers.Timer tt = (System.Timers.Timer)sender;
                    bll.SyncDataFromFeefo();
                    logHelper.WriteLine("从feefo同步数据完成");
                }
                catch(Exception ex)
                {
                    logHelper.WriteLine(ex.Message);
                }
            }
            else if ((intMinute == 15 && intSecond == 00) || (intMinute == 25 && intSecond == 00) || (intMinute == 35 && intSecond == 00) || (intMinute == 45 && intSecond == 00) || (intMinute == 55 && intSecond == 00))
            {
                try
                {
                    logHelper.WriteLine("自动邮件发送服务启动" + DateTime.Now.ToString());
                    bll.SendEmail();
                    logHelper.WriteLine("邮件发送完成" + DateTime.Now.ToString());
                }
                catch(Exception ex)
                {
                    logHelper.WriteLine(ex.Message);
                }
            }
        }

        protected override void OnStop()
        {
            logHelper.WriteLine("服务停止");
            EventLog.WriteEntry("同步feefo数据服务停止");
            bll.SetServiceStatus("WendyWuAutoService", "Stopped");
        }

    }

安装服务配置

1.打开Service1.cs视图界面

2.在视图内右键-->添加安装程序

3.

项目中添加了ProjectInstaller.cs文件,该文件中视图自动会添加俩个组件

serviceProcessInstaller1

serviceInstaller1

4.选中serviceProcessInstaller1组件,查看属性,设置account为LocalSystem

5. 选中serviceInstaller1组件,查看属性

  设置ServiceName的值, 该值表示在系统服务中的名称

  设置StartType, 如果为Manual则手动启动,默认停止,如果为Automatic为自动启动

  设置Description,添加服务描述

安装服务

1.点击 开始,运行中输入cmd,获取命令提示符

win7需要已管理员的身份启动,否则无法安装

2.

输入 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 回车

切 换当前目录,此处需要注意的是,在C:\Windows\Microsoft.NET\Framework目录下有很多类似版本,具体去哪个目录要看项目 的运行环境,例 如果是.net framework2.0则需要输入 cd C:\Windows\Microsoft.NET\Framework\v2.0.50727

3.

输入 InstallUtil.exe E:\TestApp\Winform\WinServiceTest\WinServiceTest\bin\Debug\WinServiceTest.exe 回车

说明:E:\TestApp\Winform\WinServiceTest\WinServiceTest\bin\Debug\WinServiceTest.exe表示项目生成的exe文件位置

4.打开服务,就可以看到已经安装的服务了

卸载服务

  1. 卸载很简单,打开cmd, 直接输入 sc delete WinServiceTest便可

时间: 2024-11-08 19:12:42

C#创建Windows服务与安装-图解的相关文章

C#创建windows服务、调试、安装

 一.创建Windows服务  二.调试windows程序  三.发布windows程序 如果安装有问题可以使用下面工具进行安装 window服务安装工具下载 示例源码

Mysql数据库一:安装与创建windows服务

Mysql数据库安装与创建windows服务 1.先下载压缩包(mysql-5.7.18-winx64.zip)移动到对应目录(如D:\software)后解压. 2.安装服务端: mysqld:带d是服务端程序 D:\> D:\software\mysql-5.7.18-winx64\bin\mysqld --initialize-insecure (控制台最好以管理员模式启动) 此时已经为我们初始化好了服务端程序,并创建了初始用户root 密码空, 初始程序为我们在D:\software\m

【转帖】Windows下PostgreSQL安装图解

Windows下PostgreSQL安装图解 这篇文章主要为大家介绍了如果在Windows下安装PostgreSQL数据库的方法,需要的朋友可以参考下 现在谈起免费数据库,大多数人首先想到的可能是MySQL,的确MySQL目前已经应用在国内很多领域,尤其是网站架设方面.但是,实际上功能最强大.特性最丰富和最复杂的免费数据库应该是PostgreSQL.它的很多特性正是当今许多商业数据库例如Oracle.DB2等的前身. 其实笔者最近也是因为项目需要,接触了一点PostgreSQL的皮毛,最近Pos

(转)为C# Windows服务添加安装程序

本文转载自:http://kamiff.iteye.com/blog/507129 最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多.像后台运行不阻塞系统,不用用户登录之类.哈 哈,扯远了,今天讲一下那个怎么给Windows服务做个安装包.为什么做安装包?当然是方便了,不用每次调用InstallUtil,还有,就是看上去 正规些. 不多说了,先来看看怎么做吧.首先,当然是创建一个Windows服务的项目.这个大家应该都知道怎么做(这都不明白的留

Topshelf创建Windows服务

使用Topshelf创建Windows服务 概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的介绍使用使用Topshelf创建Windows 服务.Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主. 引用安装 1.官网:http://topshelf-project.c

使用Topshelf 5步创建Windows 服务 z

使用Topshelf创建Windows 服务简要的介绍了创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的介绍使用使用Topshelf创建Windows 服务.Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主. 1.Topshelf的代码托管在http://topshelf-project.c

(转)创建Windows服务(Windows Services)N种方式总结

转自:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html 最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来.目前我知道的创建创建Windows服务有3种方式:a.利用.net框架类ServiceBaseb.利用组件Topshelfc.利用小工具instsrv和srvany 下面我利用这3种方式,分别做一个windows服务程序,程序功能就是每隔5秒往程序目录下记录日志: a.利用.net框架类

.Net创建windows服务入门

本文主要记录学习.net 如何创建windows服务. 1.创建一个Windows服务程序 2.新建安装程序 3.修改service文件 代码如下 protected override void OnStart(string[] args) { using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\log.txt", true)) { sw.WriteLine(DateTime.Now.ToString(&

创建Windows服务简单流程

1.首先打开VS2010(或者其他版本),创建Windows服务项目 2.创建完成后切换到代码视图,代码中默认有OnStart和OnStop方法执行服务开启和服务停止执行的操作,下面代码是详细解释: 注意选择的是系统时间,不是winform中的时间. using System; using System.IO; usingSystem.ServiceProcess; using System.Text; usingSystem.Timers; namespaceTestService { pub