c#之添加window服务(定时任务)
本文讲述使用window服务创建定时任务
1.如图,新建项目,windows桌面->windows服务

2.如图,右键,添加安装程序

3.在下图安装程序 serviceInstaller1 上右键,修改serviceName和Description

4.如图,在 serviceProcessInstaller 上右键,修改 Account 为 LocalSystem

5.在Service1中 添加代码
public partial class Service1 : ServiceBase
{
//记录到event log中,地址是 C:\Windows\System32\winevt\Logs (双击查看即可,文件名为MyNewLog)
private static EventLog eventLog1;
private int eventId = ; public Service1()
{
InitializeComponent(); eventLog1 = new System.Diagnostics.EventLog();
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource(
"MySource", "MyNewLog");
}
eventLog1.Source = "MySource";
eventLog1.Log = "MyNewLog";
} /// <summary>
/// 启动服务
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("In OnStart.");
log("In OnStart."); // Set up a timer that triggers every minute. 设置定时器
Timer timer = new Timer();
timer.Interval = ; // 60 seconds 60秒执行一次
timer.Elapsed += new ElapsedEventHandler(this.OnTimer);
timer.Start();
} /// <summary>
/// 停止服务
/// </summary>
protected override void OnStop()
{
eventLog1.WriteEntry("In OnStop.");
log("In OnStop.");
} /// <summary>
/// 继续服务
/// </summary>
protected override void OnContinue()
{
eventLog1.WriteEntry("In OnContinue.");
log("In OnContinue.");
} /// <summary>
/// 定时器中定时执行的任务
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
public void OnTimer(object sender, ElapsedEventArgs args)
{
// TODO: Insert monitoring activities here.
eventLog1.WriteEntry("Monitoring the System", EventLogEntryType.Information, eventId++);
log("the timer");
} /// <summary>
/// 记录到指定路径:D:\log.txt
/// </summary>
/// <param name="message"></param>
private static void log(string message)
{
using (FileStream stream = new FileStream("D:\\log.txt", FileMode.Append))
using(StreamWriter writer=new StreamWriter(stream))
{
writer.WriteLine($"{DateTime.Now}:{message}");
}
} }
结构如图:

6.右键生成解决方案

7.打开项目,复制bin目录到C盘下新建的 windowServiceTest 文件夹的 windowService_Hello文件夹下,另外复制 C:\Windows\Microsoft.NET\Framework\v4.0.30319 下的 InstallUtil.exe 到 windowServiceTest 文件夹下;如图


8.安装服务
打开cmd (以管理员身份),并且进入windowServiceTest 文件夹下
安装服务:
InstallUtil.exe C:\windowServiceTest\windowService_Hello\bin\Debug\WindowService_HelloWorld.exe

效果图:

9.打开服务管理器,启动MyService服务,并且等待几分钟,然后卸载服务
卸载服务:
InstallUtil.exe -u C:\windowServiceTest\windowService_Hello\bin\Debug\WindowService_HelloWorld.exe

10.检验是否有效果
在D盘发现log.txt文件,打开如下

event log 所在如图

可见,window服务上的定时任务已生效
参考网址
https://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer
c#之添加window服务(定时任务)的更多相关文章
- 使用winform程序控制window服务的操作
继上篇 c#之添加window服务(定时任务) 基础之上, 这篇文章主要讲述,使用winform程序来控制window服务的安装,启动,停止,卸载等操作 1.在同一个解决方案添加winform项目,如 ...
- 创建 window service 定时任务
参考文章:http://www.cnblogs.com/jack-liang/archive/2011/05/20/2051743.html 前段时间做过一个项目,前端系统提供添加定时任务,后端系统要 ...
- 自定义Window 服务
自定义window 服务 开发到使用的流程: 1.完成对应的代码之后(代码在底下),右键MyService.cs 添加安装程序 2.添加window服务安装程序打开Service1.cs[设计]页面, ...
- C#编写window服务,一步一步(1)
Window服务是啥,这里就不废话了,如何用在哪里用也不废话了,这里我这篇文章只是详述了我在vs2012中创建window服务的经过,希望对你有所帮助. 另外:我在编写服务过程中参考了 Profess ...
- C# 编写Window服务基础(一)
一.Windows服务介绍: Windows服务以前被称作NT服务,是一些运行在Windows NT.Windows 2000和Windows XP等操作系统下用户环境以外的程序.在以前,编写Wind ...
- C# 编写短信发送Window服务
我们做项目过程中,一般都会有发送短信的需求.最常见的就是户注册或者登录时发送短信验证码.不同类型的短信发送,我们都可以放到到一张短信表中,然后通过一个定时的作业去执行短信发送.而定时作业的执行,我们就 ...
- window服务创建
第一步:创建服务 第二步:在Service1.cs视图中 右键 选择”添加安装程序” 这里要注意几个细节 设置上面的属性 这两个分别有属性,具体网上查使用方式 3 实例代码编写 主要下面几个方法 pr ...
- C#在window服务配置Log4Net.dll
1.使用背景: C#window服务下添加一个日志记录程序集(Log4Net.dll) 2.添加和使用步骤如下: 一.下载并引入Log4Net.dll程序集到项目中 下载地址:http://loggi ...
- 创建一个MongoDB数据库再到配置成Window服务再设置用户名密码
1.安装MongoDB数据在官网下载安装 然后在C盘找到C:\Program Files\MongoDB\Server\4.0\bin这个可执行目录 使用cmd进入到这: 2.在C盘根目录创建一个名为 ...
随机推荐
- laravel Error 笔记
一.有关CSRF验证 1.网址访问POST请求,如 127.0.0.1:81/delUser?id=1 网页请求是默认是GET请求方式,看返回的数据信息就知道,数据是以GET方式发送的,所以若路由中 ...
- Eclipse为不同的文件类型设置编码格式和编辑器
不知道大家遇到项目中编码格式不统一的情况没有,哈哈,我们就是,比如java的编码格式是GBK,html等编码是UTF-8,这样会导致很多问题,比如提交了一个UTF-8的java文件到SVN,会导致后端 ...
- HIVE SQL产生的文件数量及参数调优
产生背景:sqoop抽取oracle数据到hive表时,只能写入到固定分区(--hive-partition-key #hive分区字段 --hive-partition-value #hive分区值 ...
- 8.python3实用编程技巧进阶(三)
3.1.如何实现可迭代对象和迭代器对象 #3.1 如何实现可迭代对象和迭代器对象 import requests from collections.abc import Iterable,Iterat ...
- Multi-touch (MT) Protocol 小结
1, 两种多点触摸协议: A类: 处理无关联的接触: 用于直接发送原始数据: B类: 处理跟踪识别类的接触: 通过事件slot发送相关联的独立接触更新. 2, 触摸协议的使用: A类协议: A类协议在 ...
- Windows远程桌面多用户登录的问题
RDP WRAPPER 同时登录 多用户补丁 https://cloud.tencent.com/developer/article/1460728 解决系统更新导致无法多用户登录的问题 问题 ...
- Vim基础配置
vim 个性化设置 安装插件管理器Vundle: 创建目录: mkdir -p ~/.vim/bundle 下载文件: git clone https://github.com/VundleVim/V ...
- svn 在Windows下用TortoiseSVN checkout 时报认证错误
TortoiseSVN 第一次 checkout(检出)时,需要输入用户名密码,如果第一次你保存了你的用户名密码,那么这个检出的项目以后就会用这个用户名密码,如果你的密码改了之后,就会报一个认证错误的 ...
- 如何在VIM中保存编辑的只读文件
我们经常碰到这样的情景:在VIM中编辑了一个系统配置文件,当需要保存时才发现当前的用户对该文件没有写入的权限, 这时候怎么办呢? 当需要保存时,输入以下的命令: :w !sudo tee %
- Jmeter设置默认中文启动
安装好jmeter,启动的页面是全英文,对于不熟悉jmeter的人来说,理解起来还是很困难的.如何设置成中文页面呢? 方法一:打开jmeter后,设置Options—choose language—C ...