如何编写Window服务程序(C# )
虚拟需求:编写一个Window服务,并注册到操作系统的服务里。让他隔30秒运行一下(写当前日期到一个文本里)
步骤:
- 创建一个Window 窗体应用程序项目(Greatwall.Mes.WindowsService)
- 添加一个新项,类型为Window 服务(TestService.cs)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Timers; namespace Greatwall.Mes.WindowsService
{
partial class TestService : ServiceBase
{
public TestService()
{
InitializeComponent();
} Timer timerTest;
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。 timerTest = new Timer();
timerTest.Interval = 30000;
timerTest.Elapsed += timerTest_Elapsed;
timerTest.Enabled = true; } void timerTest_Elapsed(object sender, ElapsedEventArgs e)
{
SaveLog();
} protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
timerTest.Enabled = false; } private void SaveLog()
{
string logPath = "C:\\Log.txt";
string strLog = DateTime.Now.ToString() + "\n\r";
if (!File.Exists(logPath))
{
FileStream fs1 = new FileStream(logPath, FileMode.Create, FileAccess.Write);//创建写入文件
StreamWriter sw = new StreamWriter(fs1); sw.WriteLine(strLog);
sw.Close();
fs1.Close();
}
else
{
StreamWriter sw = File.AppendText(logPath);
sw.Write(strLog);
sw.Close();
} }
}
}- 点中TestService.cs(视图模式),右键---添加安装程序,系统会自动生成一个ProjectInstaller.cs文件
- 设置erviceProcessInstaller1的Account=LocalService
- 设置serviceInstaller1的StartType=Automatic
- 删除Form1那个创建时自动生成的文件
- 修改Program.cs文件
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new TestService()
};
ServiceBase.Run(ServicesToRun);
}- 编译成功后,代码部分就算结束了,开始注册服务到服务器上了。
- 将Bing下的Debug文件夹拷贝到D盘根目录上
- 打开Dos命令执行窗口
- 安装
cd "C:\Windows\Microsoft.NET\Framework64\v4.0.30319"
InstallUtil.exe D:\Debug\Greatwall.MOM.R1.WindowsServcie.exe
- 看提示,如提示成功就到管理工具--服务里看看TestService是否有了,如有了,手动启动一下。
- 再到C盘看看log.txt文件是否开始写日期了
- 卸载 InstallUtil.exe /u D:\Debug\Greatwall.MOM.R1.WindowsServcie.exe [我本机卸载完后服务显示为禁用状态,再装就说已存在,重启后不见了]
- 问题1:启动服务时报错,后面是发现我没有去改Program.cs里的代码。
- 问题2:启动服务正常,但没开始写log.txt文件,后面发现是C盘权限的问题。手工创建一个并设置权限为EveryOne后正常。
- 代码Debug: 解决问题二时需要用到Debug,在解决方案中,附加进程(用户进程),进程就是Greatwall.MOM.R1.WindowsServcie.exe这个可执行文件,在代码中设置好断点就可以了。
- 修改配置文件:Greatwall.MOM.R1.WindowsServcie.exe.config 直接编辑。修改后重启服务即可
如何编写Window服务程序(C# )的更多相关文章
- 编写 Window 服务程序
编写 Window 服务程序 一.直观认识Windows服务. 打开Windows“控制面板/管理工具/服务”,系统显示Windows服务列表. ...
- C# 编写Window服务基础(一)
一.Windows服务介绍: Windows服务以前被称作NT服务,是一些运行在Windows NT.Windows 2000和Windows XP等操作系统下用户环境以外的程序.在以前,编写Wind ...
- 用 C 语言编写 Windows 服务程序的五个步骤
Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务.为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择.本文将建立并实现一个简单的服务程序,其功能是查询系统 ...
- C语言编写Windows服务程序
原文:C语言编写Windows服务程序 #include <Windows.h> #include <stdio.h> #define SLEEP_TIME 5000 // 间 ...
- 用C语言编写Windows服务程序的五个步骤
Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务.为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择.本文将建立并实现一个简单的服务程序,其功能是查询系统 ...
- 编写windows服务程序
2012-11-02 08:54 (分类:计算机程序) windows服务是一个运行在后台并实现勿需用户交互的任务的控制台程序,对于隐藏程序有很大帮助. 用了几天时间概括了编写windows服务程序的 ...
- C#编写window服务,一步一步(1)
Window服务是啥,这里就不废话了,如何用在哪里用也不废话了,这里我这篇文章只是详述了我在vs2012中创建window服务的经过,希望对你有所帮助. 另外:我在编写服务过程中参考了 Profess ...
- C#编写Windows服务程序图文教程
安装服务程序C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe 要安装的服务程序路径(如F:\***.exe)卸载服务程序C: ...
- C#编写Windows服务程序 (服务端),client使用 消息队列 实现淘宝 订单全链路效果
需求: 针对 淘宝提出的 订单全链路 产品接入 .http://open.taobao.com/doc/detail.htm?id=102423&qq-pf-to=pcqq.group oms ...
随机推荐
- github二次认证接收短信的问题
这两天登陆github都被提示说我账号的密码已经被归类,提醒我修改密码. 改密码的时候发现GitHub有个二次认证的功能,分别是app和sms短信认证.app这里就不讲了,我们讲一下github的短信 ...
- 互联网媒体类型 MIME Type
参考:https://zh.wikipedia.org/wiki/%E4%BA%92%E8%81%94%E7%BD%91%E5%AA%92%E4%BD%93%E7%B1%BB%E5%9E%8B 互联网 ...
- cordova热更新插件的使用:cordova-hot-code-push-plugin
1. 添加插件:cordova plugin add cordova-hot-code-push-plugin 2. 先打开cli,执行命令 npm install -g cordova-hot-co ...
- 数学:确定性的丧失 (M·克莱因 著)
第一章 数学真理的起源 (已看) 第二章 数学真理的繁荣 (已看) 第三章 科学的数学化 (已看) 第四章 第一场灾难:真理的丧失 (已看) 第五章 一门逻辑科学不合逻辑的发展 (已看) 第六章 分析 ...
- insert 插入
自动关联当前时间: GETDATE():返回当前时间和日期.
- git项目提交后执行添加忽略操作
需要删除文件暂存区中的忽略文件 git rm -r --cached 需要忽略的已提交文件或文件夹 eg: git rm -r --cached target/
- 如何修改MSSQL的用户名
Alter LOGIN sa DISABLE Alter LOGIN sa WITH NAME = [systemAccount] "systemAccount" 为SA的新名称, ...
- LINUX 查看当前系统的内存使用情况 vmstat
Linux vmstat 命令 Vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况. 相比 ...
- python 前后端分离 简单的数据库返回接口
1.使用node http-server 起本地服务器 或者打开nginx 直接用nginx的默认页面也可以 (用下面的html文件替换nginx下html文件夹下的index.html) http ...
- Android App启动速度优化
解决在桌面上点击APP图标后经过一两秒后才显示页面,以及App启动后主界面显示过慢问题 一.应用的启动方式 1.冷启动:当启动应用时,后台没有该应用的进程,这时系统会首先会创建一个新的进程分配给该应用 ...