一个简单的C# WINDOWS服务程序
2010-03-19 13:19
134 查看
今天在做个程序,写一个通讯平台,功能是一个TCP的通讯平台,和应用网关通讯,一边是SQLSERVER的扩展存储过程,它从SQL库中提出相应的字段,通过UDP丢包给通讯平台,平台收到包后连应用网关,把数据包发过去并接收应用网关的回执。实现上准备写个windows服务程序,这样即使机器重起了,不用登陆也可以运行,不会影响到业务的正常运行。
在做C# WINDOWS服务之前先熟悉一下C# WINDOWS服务程序在C#中的写法。
1.在VS.NET2003中新建一个WINDOWS服务程序的项目WinSrv_A。
2.更改SERVICE1.CS属性SERVICENAME为你所要建立的服务名称,在服务管理器->名称中你可以看到你的服务名
3.按F7进入代码窗口,里面有2个重载函数是你要在其中写代码的一个是
//protected override void OnStart(string[] args)
//{...} //这个函数是你启动服务后执行的函数
//protected override void OnStop()
//{...}//这个函数是你停止服务后执行的函数
我这里简单的做一个记录启动和终止服务的时间的功能。写如日志文档。
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
String s = System.DateTime.Now.ToString();
if(!File.Exists("c://srvlog.txt"))
{
StreamWriter sr = File.CreateText("c://bbbirdlog.txt");
sr.WriteLine("-------------------------START SRV---------------------");
sr.WriteLine ("我的新服务在{0}时间开始",s);
sr.WriteLine ("我可以写整型 {0} or 浮点型 {1},等等.",1, 4.2);
sr.Close();
}
else
{
StreamWriter sr = File.AppendText("c://bbbirdlog.txt");
sr.WriteLine("-------------------------START SRV---------------------");
sr.WriteLine ("我的新服务在{0}时间开始",s);
sr.WriteLine ("我可以写整型 {0} or 浮点型 {1},等等.",1, 4.2);
sr.Close();
}
}
///
/// 停止此服务。
///
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
String s1 = System.DateTime.Now.ToString();
if(!File.Exists("c://srvlog.txt"))
{
StreamWriter sr = File.CreateText("c://bbbirdlog.txt");
sr.WriteLine("-------------------------STOP SRV---------------------");
sr.WriteLine ("我的新服务在{0}时间停止",s1);
sr.Close();
}
else
{
StreamWriter sr = File.AppendText("c://bbbirdlog.txt");
sr.WriteLine("-------------------------STOP SRV---------------------");
sr.WriteLine ("我的新服务在{0}时间停止",s1);
sr.Close();
}
}
4.回到设计窗口点右键选择添加安装程序生成serviceInstaller1和serviceProcessInstaller1两个组件
把serviceInstaller1的属性ServiceName改写为你的服务程序名,并把启动模式设置为AUTOMATIC
把serviceProcessInstaller1的属性account改写为LocalSystem
5.编译链接生成服务程序。
6.用.net framework工具INSTALLUTIL安装服务程序即可。
这样,就用C#写了一个简单的C# WINDOWS服务程序。
1> 新建一个windows服务项目
2> 选中Service1 然后在视图界面,右键-->[添加安装程序]
3>
这时会出现ProjectInstaller.cs 文件,以及在ProjectInstaller 视图界面 有2个控件ITPUB个人空间+ROb(@O[)G
serviceInstaller1: 你可以修改它的Descirption 以及 ServiceName 这2个属性分别为你的 服务描述 和 服务名称ITPUB个人空间i4E)}qu#iz/I(Rl
serviceProcessInstaller1: 你需要修改Account属性,它代表运行此服务的帐户类型,一般你需要把他改为LocalSystem
到现在我们前期工作都完成,然后你可以在Service1.cs里面编写你的服务代码了,它分别有
OnStart(string[] arg)和OnStop() 方法,你可以在此编写你需要的执行的程序了.
然后我们运行.net的发布工具installutil .exe来添加到windows服务里面(该工具默认在C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727 目录下)
把下面代码 保存到txt文件,并且另存为bat文件,并且和你的exe文件放在一起,那么双击就可以直接安装服务了.
安装:
C#代码
@echo off
echo wjboy49服务安装
cd C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727
C:
installutil D:/Debug/WindowsServiceZol.exe --注D:/Debug/是你windows服务的路径
echo 成功
echo. & pause
卸载:
只要改成 installutil D:/Debug/WindowsServiceZol.exe /u就哦啦。
安装后自动启动,要在ProjectInstaller中加入下面的语句
C#代码
private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
string Cmdstring = "sc start wjboy49"; //CMD命令
p.StandardInput.WriteLine(Cmdstring);
p.StandardInput.WriteLine("exit");
}
在做C# WINDOWS服务之前先熟悉一下C# WINDOWS服务程序在C#中的写法。
1.在VS.NET2003中新建一个WINDOWS服务程序的项目WinSrv_A。
2.更改SERVICE1.CS属性SERVICENAME为你所要建立的服务名称,在服务管理器->名称中你可以看到你的服务名
3.按F7进入代码窗口,里面有2个重载函数是你要在其中写代码的一个是
//protected override void OnStart(string[] args)
//{...} //这个函数是你启动服务后执行的函数
//protected override void OnStop()
//{...}//这个函数是你停止服务后执行的函数
我这里简单的做一个记录启动和终止服务的时间的功能。写如日志文档。
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
String s = System.DateTime.Now.ToString();
if(!File.Exists("c://srvlog.txt"))
{
StreamWriter sr = File.CreateText("c://bbbirdlog.txt");
sr.WriteLine("-------------------------START SRV---------------------");
sr.WriteLine ("我的新服务在{0}时间开始",s);
sr.WriteLine ("我可以写整型 {0} or 浮点型 {1},等等.",1, 4.2);
sr.Close();
}
else
{
StreamWriter sr = File.AppendText("c://bbbirdlog.txt");
sr.WriteLine("-------------------------START SRV---------------------");
sr.WriteLine ("我的新服务在{0}时间开始",s);
sr.WriteLine ("我可以写整型 {0} or 浮点型 {1},等等.",1, 4.2);
sr.Close();
}
}
///
/// 停止此服务。
///
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
String s1 = System.DateTime.Now.ToString();
if(!File.Exists("c://srvlog.txt"))
{
StreamWriter sr = File.CreateText("c://bbbirdlog.txt");
sr.WriteLine("-------------------------STOP SRV---------------------");
sr.WriteLine ("我的新服务在{0}时间停止",s1);
sr.Close();
}
else
{
StreamWriter sr = File.AppendText("c://bbbirdlog.txt");
sr.WriteLine("-------------------------STOP SRV---------------------");
sr.WriteLine ("我的新服务在{0}时间停止",s1);
sr.Close();
}
}
4.回到设计窗口点右键选择添加安装程序生成serviceInstaller1和serviceProcessInstaller1两个组件
把serviceInstaller1的属性ServiceName改写为你的服务程序名,并把启动模式设置为AUTOMATIC
把serviceProcessInstaller1的属性account改写为LocalSystem
5.编译链接生成服务程序。
6.用.net framework工具INSTALLUTIL安装服务程序即可。
这样,就用C#写了一个简单的C# WINDOWS服务程序。
windows 服务
文章分类:.net编程1> 新建一个windows服务项目
2> 选中Service1 然后在视图界面,右键-->[添加安装程序]
3>
这时会出现ProjectInstaller.cs 文件,以及在ProjectInstaller 视图界面 有2个控件ITPUB个人空间+ROb(@O[)G
serviceInstaller1: 你可以修改它的Descirption 以及 ServiceName 这2个属性分别为你的 服务描述 和 服务名称ITPUB个人空间i4E)}qu#iz/I(Rl
serviceProcessInstaller1: 你需要修改Account属性,它代表运行此服务的帐户类型,一般你需要把他改为LocalSystem
到现在我们前期工作都完成,然后你可以在Service1.cs里面编写你的服务代码了,它分别有
OnStart(string[] arg)和OnStop() 方法,你可以在此编写你需要的执行的程序了.
然后我们运行.net的发布工具installutil .exe来添加到windows服务里面(该工具默认在C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727 目录下)
把下面代码 保存到txt文件,并且另存为bat文件,并且和你的exe文件放在一起,那么双击就可以直接安装服务了.
安装:
C#代码
@echo off
echo wjboy49服务安装
cd C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727
C:
installutil D:/Debug/WindowsServiceZol.exe --注D:/Debug/是你windows服务的路径
echo 成功
echo. & pause
@echo off echo wjboy49服务安装 cd C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727 C: installutil D:/Debug/WindowsServiceZol.exe --注D:/Debug/是你windows服务的路径 echo 成功 echo. & pause
卸载:
只要改成 installutil D:/Debug/WindowsServiceZol.exe /u就哦啦。
安装后自动启动,要在ProjectInstaller中加入下面的语句
C#代码
private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
string Cmdstring = "sc start wjboy49"; //CMD命令
p.StandardInput.WriteLine(Cmdstring);
p.StandardInput.WriteLine("exit");
}
相关文章推荐
- 用C#写一个简单的WINDOWS服务程序
- 【C#】一个简单的windows服务程序
- 用C#写一个简单的WINDOWS服务程序
- [转]推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler
- C# 创建、部署和调用WebService的简单示例 webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互。 概念性的东西就不说太多,下面开始创建一个简单的webservi
- 用C# WinForm写的一个简单的计算器程序(可以输入复杂的表达式),欢迎大家指出Bug
- 一个简单的小例子让你明白c#中的委托-终于懂了!
- 如何用C#写一个简单的Login窗口
- C#实现一个最简单的HTTP服务器
- 适合C# Actor的消息执行方式(5):一个简单的网络爬虫
- C#实现一个最简单的HTTP服务器
- C#实现一个简单的 Restful Service
- 用C#设计一个简单的修改密码界面
- C#大作业一个简单的编辑器
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- (C#)一个WCF简单实例
- C#一个简单的定时小程序实现代码
- C#做一个简单的进行串口通信的上位机
- c#中子线程控制进度条的一个简单例子
- 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler