C#简单windows服务
因为做后台比较多,所以经常需要写一些后台服务。一般的流程是先创建一个服务项目,加入代码。然后打包一个安装程序或者直接用dos命令安装服务。下面是详细内容:
1. 创建windows服务项目。
VisualStudio的项目模版里面有一个对应的是windows服务,如下图:

选择上面的模版新建项目后,服务的主程序代码在Service1.cs里面,右击这个文件选择查看代码。下面的代码是一个简单的例子,真正的项目里面一般会调用我们自己写的一些库来实现比较复杂的逻辑,不过大部分情况下都是开个线程跑一个循环。
public partial class Service1 : ServiceBase
{
private Thread t;
public Service1()
{
InitializeComponent();
t = new Thread(Run);
} protected override void OnStart(string[] args)
{
t.Start();
} protected override void OnStop()
{
t.Abort();
} private void Run()
{
while (true)
{
File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "\\xx.txt", DateTime.Now.ToString() + Environment.NewLine);
Thread.Sleep();
}
}
}
代码编写完后构建项目,会生成相关的程序集,主要是WindowsService1.exe。
2. 安装服务。
我一般用命令行来安装服务,所以流程比较简单。我们可以把编译好的程序放到一个指定的目录,比如"D:\my\service1"。
下面是安装命令:sc create hello binPath= "D:\my\service1\WindowsService1.exe" DisplayName= "hello"
其中,create后面的hello是服务名,另外两个参数分别是程序路径和显示名称。注意选项=符号和值之间有个空格。
安装时还可以指定依赖等其他选项,具体可以sc create \?来查看。
安装完后打开services.msc会看到新安装的服务,右击启动便可以运行服务了。
下面是一些常用的维护:
1. 更新服务程序。
先停止服务,然后等待一会,然后将新构建的程序集复制到安装目录覆盖老的程序集。
然后再重新启动服务。
2. 删除服务。
sc delete hello
其中hello是服务名称。
3. 修改服务描述。
sc description [服务名称] [描述]
sc description hello 测试
C#简单windows服务的更多相关文章
- c#创建、安装、卸载、调试windows服务的简单事例
最近工作中用到了windows服务,对其有深刻理解和丰富经验谈不上,本篇文章只是简单陈诉用c#创建.安装.卸载.调试windows服务的步骤. 一.创建windows服务 1.用VS创建windows ...
- 使用Topshelf组件构建简单的Windows服务
很多时候都在讨论是否需要了解一个组件或者一个语言的底层原理这个问题,其实我个人觉得,对于这个问题,每个人都有自己的看法,个人情况不同,选择的方式也就会不同了.我个人觉得无论学习什么,都应该尝试着去了解 ...
- 使用C#开发windows服务定时发消息到钉钉群_群组简单消息
前言:本提醒服务,是由C#语言开发的,主要由windows服务项目和winform项目组成,运行服务可实现功能:向钉钉自定义机器人群组里,定时,定次,推送多个自定义消息内容,并实现主要功能的日志记录. ...
- C# Asp.net Quartz.NET作业调度之创建、安装、卸载、调试windows服务的简单事例
一.创建windows服务 1.用VS创建windows服务,结果如下: 2.删除默认生成的Service1.cs文件,然后创建自己的服务文件(如:MyService),并修改Program.cs文件 ...
- windows服务 MVC之@Html.Raw()用法 文件流的读写 简单工厂和工厂模式对比
windows服务 public partial class Service1 : ServiceBase{ System.Threading.Timer recordTimer;public S ...
- C#创建、安装、卸载、调试Windows Service(Windows 服务)的简单教程
前言:Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这 ...
- C#开发Windows服务 附简单实例实现禁止QQ运行
本实例主要实现下面三个基本功能 1.C#开发windows服务 2.禁止QQ等程序运行 3.为windows服务创建自动安装程序 下面针对这三个基本功能进行实现 一.C#开发windows服务 Win ...
- 单线程与多线程的简单示例(以Windows服务发短信为示例)
单线程示例: public delegate void SM(); SM sm = new SM(() => { while (true) ...
- 创建Windows服务简单流程
1.首先打开VS2010(或者其他版本),创建Windows服务项目 2.创建完成后切换到代码视图,代码中默认有OnStart和OnStop方法执行服务开启和服务停止执行的操作,下面代码是详细解释: ...
随机推荐
- PHP 文件上传服务端及客户端配置参数说明
文件上传服务器端配置: ·file_uploads = On, 支持HTTP上传 ·upload_tmp_dir = , 临时文件保存的目录 ·upload_max_filesize=2M, 允许上传 ...
- DNS笔记 DNS区域集成到 Active Directory
可以将 DNS 区域集成到 Active Directory 中以提供增强的容错功能和安全性.OpenDNS Google Public DNS往返时间 (RTT) 远程访问服务 (RAS)域名与 ...
- jQuery打造用户注册时获取焦点文本框出现提示jquery表单特效
jQuery打造用户注册时获取焦点文本框出现提示效果的jquery表单特效 当获取焦点时,会分别的弹出相应的信息提示框,失去焦点就会隐藏提示信息. 效果兼容性很高,适用浏览器:IE6.IE7.IE8. ...
- PHP判断用户所在国家并跳转对应的目录
<?php // 淘宝API查询国家代码 $url = "http://ip.taobao.com/service/getIpInfo.php?ip=".get_client ...
- phpcms v9 中get的mysql查询表某字段最大值数据,表某字段不重复数据
直切正题 1.表tb中字段num最大的数据 {pc:get $sql="select * from tb where num=(select MAX(num) from tb)"} ...
- DOS下无法调出中文输入法-Solved
From:http://www.cnblogs.com/killerlegend/p/3750542.html Author:KillerLegend Date:2014.5.24 DOS下无法打开中 ...
- Delphi7中编译提示“Unsafe type 'PChar'”的原因及处理办法
delphi7中加入了对.net的支持 在.net中是没有指针的(托管环境中),所以指针都是不安全的,不符合.net规范 所以d7里有警告,可以不管它 DELPHI7已经考虑到了移植到点NET的问题, ...
- Mongodb Gridfs
http://www.cnblogs.com/lipan/archive/2011/03/21/1989409.html
- Treeview获取父节点
private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object&g ...
- 【原创】小白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》连载五(给按钮加图标)
在范例5-4所使用的导航栏中,已经为按钮加入了图标的样式,但是当时并没有介绍按钮的图标究竟是怎么一回事.下面截取范例5-4中导航栏部分的代码: <divdata-role="foote ...