如何编写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 ...
随机推荐
- 浅谈HTTP和HTTPS的区别
这篇随笔我们从六个步骤来学习: 1.了解HTTP和HTTPS的基本概念 2.HTTPS诞生的目的 3.HTTP与HTTPS的区别 4.HTTP和HTTPS的工作原理 5.HTTPS的优缺点 6.如何将 ...
- idea的maven项目下spring与mybatis整合
两周前学习mybatis框架,参考了网上多位大神的博客,但因为各种原因(不解释)总是没法成功搭建环境并运行项目.周末花了点时间阅读了文档并整理之前琐碎的内容,解决掉之前遇到的问题.现将整合环境的关键步 ...
- : LDAP & Implementation
LDAP LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根据需要 ...
- for break
public static void main(String[] args) { aaa: for (int j = 0; j < 2; j++) { System.out.println(&q ...
- 【java编程】java中的移位运算符
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >& ...
- java android 捕获未处理异常
1. 定义一个异常处理类 public class ExceptionHandler implements Thread.UncaughtExceptionHandler { public Excep ...
- C++类中this指针的理解
先要理解class的意思.class应该理解为一种类型,象int,char一样,是用户自定义的类型.用这个类型可以来声明一个变量,比如int x, myclass my等等.这样就像变量x具有int类 ...
- IIS6.0+win2003部署MVC网站的一些问题
安装iis,framework环境不谈.MVC网站部署 步骤: 1.为程序新建一个应用程序池(将default的那个程序池作为模板就可以了) 2.web服务扩展一些启用一些必要的服务 3.新建网站 描 ...
- MYSQL存储过程实现用户登录
MYSQL存储过程实现用户登录 CREATE DEFINER=`root`@`%` PROCEDURE `uc_session_login`( ), ) ) LANGUAGE SQL NOT DETE ...
- 阿里Java开发手册
1.1 命名风格 (1)常量命名全部大写,单词间用下划线隔开. (2)抽象类命名以Abstract或Base开头:异常类命名以Exception结尾:测试类命名以它要测试的类名开始,以Test结尾. ...