C#常规开发Windows服务
.Net平台下开发Windows服务的支持库很多,除了通过标准的Windows服务项目,还有一些优秀的开源架构比如:TopSelf;本文以常规项目为例
一、开发
1、新建【Windows服务】 项目:Practice.WinSvc.Normal;可以看到自动新建了一个服务类;点击打开设计界面;设计界面右键可以查看代码界面;
2、新建业务处理类OrderJob.cs
using System;
using System.Threading; namespace Practice.WinSvc.Normal
{
public sealed class OrderJob
{
private Boolean _IsStop = false;
private Thread _Thread;
public void Start()
{
_IsStop = false;
_Thread = new Thread(new ThreadStart(StartJob));
} private void StartJob()
{
while (!_IsStop)
{
//Do Some thing Thread.Sleep();
}
} public void Stop()
{
_IsStop = true; }
}
}
3、打开我们的服务PracticeWinSvcNormalService查看代码,修改:
namespace Practice.WinSvc.Normal
{
public partial class PracticeWinSvcNormalService : ServiceBase
{
public PracticeWinSvcNormalService()
{
InitializeComponent();
}
public OrderJob _orderjob = new OrderJob();
protected override void OnStart(string[] args)
{
_orderjob.Start();
} protected override void OnStop()
{
_orderjob.Stop();
}
}
}
4、添加安装程序,在服务设计界面上右键——添加安装程序,会自动添加一个ProjectInstaller里面包含了两个控件设置一些服务的属性 ;至此一个完整的服务开发完成
StartType设置手动、自动等等;ServiceName:设置服务的名称;
namespace Practice.WinSvc.Normal
{
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
}
}
二、安装
1、方法:命令行
开发完成后编译Debug版本;安装要使用一个.Net Framework自带的工具InstallUtil.exe;使用.Net4.0的工具
输入命令:
InstallUtil.exe D:\Practice\Practice.WindowsSvc\bin\Debug\Practice.WindowsSvc.exe
卸载
InstallUtil.exe \u D:\Practice\Practice.WindowsSvc\bin\Debug\Practice.WindowsSvc.exe
也可以重新定义服务的名字
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe "MyServer.exe" -service /serviceName:"myServer-v1"
调试的时候附加到进程就可以了;
2、添加VS外部工具
这个看个人习惯,添加进去方便直接在vs就执行安装;免去命令行的麻烦;直接编译过项目,点击工具——我们设置的名称就可以安装;
C#常规开发Windows服务的更多相关文章
- C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库
C# DateTime的11种构造函数 别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...
- 使用Visual Studio 2015 Community 开发windows服务
昨天研究在.NET下开发Windows服务程序,期间遇到一些小问题,这里仅将自己的开发过程和需要注意的地方写下和广大网友分享…… 1.基础 Windows服务是指系统启动时能够自己运行的程序.W ...
- C#开发Windows服务 附简单实例实现禁止QQ运行
本实例主要实现下面三个基本功能 1.C#开发windows服务 2.禁止QQ等程序运行 3.为windows服务创建自动安装程序 下面针对这三个基本功能进行实现 一.C#开发windows服务 Win ...
- VS2013开发Windows服务项目
这篇随笔里,我将介绍如何用VS2013开发Windows服务项目,实现的功能是定时发送电子邮件. 开发环境:VS2013,SQL Server2008,采用C#语言开发 步骤一:创建Windows服务 ...
- C#开发Windows服务详细流程
1.Windows服务简单介绍 Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序,主要用于长时间运行的功能或者执行定时任务.一般情况下,用户不能通过用户界面来安装和启 ...
- 使用Topshelf开发Windows服务、log4net记录日志
开发windows服务,除了在vs里新建服务项目外(之前有写过具体开发方法,可点击查看),还可以使用Topshelf. 不过使用topshelf需要.netframework 4.5.2版本,在vs2 ...
- 开发Windows服务
在开发Windows服务时需要注意一点,如果在开发完成后,需要通过命令来进行安装的,那么在开发的时候,需要在服务类上面添加一个安装文件.如下图: 添加完成后,就 ...
- c#金额转换成中文大写金额 .Net开发Windows服务
c#金额转换成中文大写金额 2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> ...
- C#开发windows服务如何调试——资料整理
原文标题:C# Windows服务程序如何进行调试 原文地址:https://jingyan.baidu.com/article/456c463b18e1b00a583144b3.html 第一种: ...
随机推荐
- 【解决方法】You seem to have the current working directory in your LD_LIBRARY_PATH environment variable.
参考地址:https://blog.csdn.net/qq_24755999/article/details/78722788 You seem to have the current working ...
- Java坑人面试题之自动装箱和拆箱后的引用数据类型和基本数据类型的计算
在Java1.5以后的版本中,引用类型Integer和基本数据类型int之间是可以通过自动装箱和拆箱进行计算的 例如: Integer in = 1; //it means Integer in = ...
- (二十一)SpringBoot之集成mybatis:使用mybatis xml
一.引入maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...
- SQL Server系统函数:系统信息函数
原文:SQL Server系统函数:系统信息函数 1.会话id,服务器信息.用户信息 select @@SPID, --返回当前连接的会话ID:SPID @@servername, --SQL Ser ...
- Asp.Net Core 轻松学系列-2从安装环境开始
Asp.Net Core 介绍 Asp.Net Core是微软新一代的跨平台开发框架,基于 C# 语言进行开发,该框架的推出,意味着微软从系统层面正式进击 Linux 服务器平台:从更新速度开 ...
- 多态——virtual
作用:解决当使用基类的指针指向派生类的对象并调用派生类中与基类同名的成员函数时会出错(只能访问到基类中的同名的成员函数)的问题,从而实现运行过程的多态 不加virtual #include<io ...
- C++ 项目和资源导引
值得学习的C语言开源项目 注意:本文转载自:https://blog.csdn.net/a110658684/article/details/78862348 - 1. Webbench Webben ...
- nginx增加新模块
以gunzip这个模块为例,讲述一下,在nginx中如何安装新的模块 1.首先查看nginx已经安装了哪些模块. nginx –V 2.发现没有gunzip模块,安装 进入nginx的安装目录中,不是 ...
- TLS1.3&TLS1.2形式化分析(二)
1.下面是TLS1.2和TLS1.3握手协议过程 ,明显的可以看出存在不同 . 我们先说TLS1.2的握手过程明显是比TLS1.3的握手过多了一次.在TLS1.3中舍弃了之前RSA的协商过程,然后基于 ...
- Scyther-Semantics and verification of Security Protocol 翻译 (第二章 2.2.2----2.3)
2.2.2 事件顺序 协议中的每个角色对应于事件列表,换句话说, 在属于角色 R 的协议事件集上施加结构,总的排序表示为 $ \prec $ , 如此任何角色 R∈Role 和 $\varepsil ...