文档章节

使用C#系统服务定时执行操作

深圳大道
 深圳大道
发布于 2016/12/29 15:24
字数 541
阅读 10
收藏 0

1.新建项目 --》 Windows 服务
2.Service1.cs代码

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.IO;
using System.Text;
using System.Timers;
using System.Data.SqlClient;
using System.Threading;
namespace InnPoint
{
    public partial class Service : ServiceBase
    {
        public Service()
        {
            InitializeComponent();
        }
        protected override void OnStart(string[] args)
        {
            EventLog.WriteEntry("我的服务启动");//在系统事件查看器里的应用程序事件里来源的描述
            writestr("服务启动");//自定义文本日志
            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.Elapsed事件; 
        }
        /// <summary>
        /// 定时检查,并执行方法
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        public void ChkSrv(object source, System.Timers.ElapsedEventArgs e)
        {
            int intHour = e.SignalTime.Hour;
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;
           
            if (intHour == 13 && intMinute == 30 && intSecond == 00) ///定时设置,判断分时秒
            {
                try
                {
                    System.Timers.Timer tt = (System.Timers.Timer)source;
                    tt.Enabled = false;
                    SetInnPoint();
                    tt.Enabled = true;
                }
                catch (Exception err)
                {
                    writestr(err.Message);
                }
            }
        }
        //我的方法
        public void SetInnPoint()
        {
            try
            {
                writestr("服务运行");
                //这里执行你的东西
			    Thread.Sleep(10000);
            }
            catch (Exception err)
            {
                writestr(err.Message);
            }
        }
        ///在指定时间过后执行指定的表达式
        ///
        ///事件之间经过的时间(以毫秒为单位)
        ///要执行的表达式
        public static void SetTimeout(double interval, Action action)
        {
            System.Timers.Timer timer = new System.Timers.Timer(interval);
            timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e)
            {
                timer.Enabled = false;
                action();
            };
            timer.Enabled = true;
        }

        public void writestr(string readme)
        {
            //debug==================================================
            //StreamWriter dout = new StreamWriter(@"c:/" + System.DateTime.Now.ToString("yyyMMddHHmmss") + ".txt");
            StreamWriter dout = new StreamWriter(@"c:/" + "WServ_InnPointLog.txt", true);
            dout.Write("/r/n事件:" + readme + "/r/n操作时间:" + System.DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"));
            //debug==================================================
            dout.Close();
        }
        protected override void OnStop()
        {
            writestr("服务停止");
            EventLog.WriteEntry("我的服务停止");
        }
    }
}

3.在Service1.cs设计页面右键添加安装程序

4.ProjectInstaller.cs设计页面中

    serviceInstaller1属性中设置:

    Description(系统服务的描述)

    DisplayName (系统服务中显示的名称)

    ServiceName(系统事件查看器里的应用程序事件中来源名称)

    serviceProcessInstaller1属性设置:Account 下拉设置成 LocalSystem

5.在.net Framework的安装目录可以找到InstallUtil.exe,可以复制出来放在你的服务生成的exe一起

6.安装服务setup.bat批处理文件内容:InstallUtil Service1.exe ,安装好后可以在系统服务中找到你设置的服务名称然后可以启动这个服务

7.卸载服务UnInstall.bat批处理文件内容:InstallUtil -u Service1.exe


本文转载自:http://blog.csdn.net/smartsmile2012/article/details/17958141

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
定时调度系列之Quartz.Net详解

一. 背景   我们在日常开发中,可能你会遇到这样的需求:"每个月的3号给用户发信息,提醒用户XXX "、"每天的0点需要统计前一天的考勤记录"、"每个月的1号计算上个月的库存情况"、"定时初始...

dotNET跨平台
2018/06/24
0
0
邮件代收代发软件操作说明

1、背景 为了方便获取和发送邮件,需要有一个定时服务来对人员列表的邮件内容进行收取,以及发送存储在数据库列表里面的邮件信息,并提供相应的界面管理功能,为企业员工提供相应的邮件服务。...

walb呀
2017/12/04
0
0
C#实现Windows后台服务实例浅析

C#实现Windows后台服务实例之前要明白的一些概念:所谓Windows后台服务,即后台自动运行的程序,一般随操作系统启动而启动,在我的电脑 服务后应用程序 服务里面能看到当前电脑的服务.一般而言,...

vga
2014/04/29
575
1
生产报表和开放数据库报表框架--Seal Report

Seal Report 是一款生产报表和开放数据库报表框架,采用微软.Net框架,C# 编写。 特性: 支持动态SQL 查询数据。 支持本地数据透视表,随意的修改表元素, 数据透视表会立即按照新的布置重新...

匿名
2016/06/29
11.1K
4
win7下用c#开发windows服务

今天跟大家介绍一下如何在win7系统下使用C#开发windows服务。主要的内容是参考了网上的一些资料及自己的研究所得。 1、首选我们需要打开VS2008,然后点击文件--》新建--》项目,选择Visual ...

postdep
2012/11/14
2.2K
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL左连接问题,右表做筛选,左表列依然在

两张表,一张user表,一张user_log表 CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFA......

bengozhong
14分钟前
4
0
重新开始学Java——多线程基础

多线程 进程 主流计算机操作系统都支持同时运行多个任务 , 每个任务通常就是一个程序 , 每个运行中的程序就是一个进程或者多个进程 。 进程的特点 独立性 进程是系统中独立存在的实体 可以...

大家都是低调来的
15分钟前
1
0
注解在Java中是如何工作的?

> 来一点咖啡,准备好进入注解的世界。 注解一直是 Java 的一个非常重要的部分,它从 J2SE 5.0 开始就已经存在了。在我们的应用程序代码中,经常看到 @Override 和 @Deprecated 这样的注解。...

liululee
17分钟前
5
0
Docker 容器连接

Docker 容器连接 容器间的链接有两种方法,你选择其一即可 网络端口映射 docker run -d -P docker run -d -p-P :是容器内部端口随机映射到主机的高端口。-p : 是容器内部端口绑定到指定...

测者陈磊
20分钟前
4
0
车载导航应用中基于Sketch UI主题定制方案的实现

1.导读 关于应用的主题定制,相信大家或多或少都有接触,基本上,实现思路可以分为两类: 内置主题(应用内自定义style) 外部加载方式(资源apk形式、压缩资源、插件等) 其实,针对不同的主题...

阿里云官方博客
26分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部