收藏 分享(赏)

C#编写windows服务.doc

上传人:gnk289057 文档编号:7444846 上传时间:2019-05-18 格式:DOC 页数:8 大小:85KB
下载 相关 举报
C#编写windows服务.doc_第1页
第1页 / 共8页
C#编写windows服务.doc_第2页
第2页 / 共8页
C#编写windows服务.doc_第3页
第3页 / 共8页
C#编写windows服务.doc_第4页
第4页 / 共8页
C#编写windows服务.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、利用 快速开发 windows 服务(c#)PCPPC.CN 教程来源:作者: 栏目:C#.NET 教程 更新时间:较新 字体尺寸:缩小 放大您正在看的 C#.NET 教程是:利用 快速开发 windows 服务(c#)。在很多应用中需要做 windows 服务来操作数据库等操作,比如 (1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份等 (2)在.net Remoting 中利用 windows 服务来做 Host 利用 我们可以在几分钟之内建立其 windows 服务,非常简单下面说一下步骤 1. 新建一个项目 2. 从一个可用的项目模板列表

2、当中选择 Windows 服务 3. 设计器会以设计模式打开 4. 从工具箱的组件表当中拖动一个 Timer 对象到这个设计表面上 (注意: 要确保是从组件列表而不是从 Windows 窗体列表当中使用 Timer) 5. 设置 Timer 属性,Interval 属性 200 毫秒(1 秒进行 5 次数据库操作) 6. 然后为这个服务填加功能 7.双击这个 Timer,然后在里面写一些数据库操作的代码,比如 SqlConnection conn=new SqlConnection(“server=127.0.0.1;database=test;uid=sa;pwd=275280“); Sql

3、Command comm=-new SqlCommand(“insert into tb1 (111,11)“,conn); conn.Open(); comm.ExecuteNonQuery(); conn.Close(); 8. 将这个服务程序切换到设计视图 9. 右击设计视图选择 “添加安装程序 ” 10. 切换到刚被添加的 ProjectInstaller 的设计视图 11. 设置 serviceInstaller1 组件的属性: 1) ServiceName = My Sample Service 2) StartType = Automatic (开机自动运行) 12. 设置 se

4、rviceProcessInstaller1 组件的属性 Account = LocalSystem 13. 改变路径到你项目所在的 binDebug 文件夹位置( 如果你以 Release 模式编译则在binRelease 文件夹) 14. 执行命令“InstallUtil.exe MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。(InstallUtil 这个程序在 WINDOWS 文件夹Microsoft.NETFrameworkv1.1.4322 下面) 15. 右击桌面上“我的电脑”,选择“管理” 就可以打计算机管理控制台 16. 在“ 服务和应用程序

5、 ”里面的“服务” 部分里,你可以发现你的 Windows 服务已经包含在服务列表当中了 17. 右击你的服务选择启动就可以启动你的服务了 看看数据库是不是一秒多了 5 个记录啊 需要注意的是: 如果你修改了这个服务,路径没有变化的话是不需要重新注册服务的,如果路径发生了变化,需要先卸载这个服务 InstallUtil.exe /u 参数,然后再重新安装这个服务,不能直接安装。还有就是 windows 服务是没有界面的,不要企图用控制的输出方式来输出一些信息,你只能添加一个 EventLog,通过 WriteEntry()来写日志。 C#.NET 写简单 Windows 服务2007 年 03

6、 月 08 日 12:48一、 遇到什么问题?有些软件,需要每隔一定时间做一些相同的事情,或者作为网络服务,像IIS、SQL Server 等这样的软件。此种情况下,往往需要让软件在没有用户干预的情况下在服务器上运行。与此种程序交互往往需要通过网络协议进行。或者程序根本就不需要与用户交互。这种程序往往称为后台程序,或后台服务。 二、 Windows 服务能做些什么?Windows 服务是这些后台程序、后台服务的正规名词。Windows 服务的运行可以在没有用户干预的情况下,在后台运行,没有任何界面。通过 Windows 服务管理器进行管理。服务管理器也只能做些简单的操作:开始,暂停,继续,停止

7、。Windows 服务和普通的 Windows 窗体应用程序类型,只是没有了界面,连最简单的 MessageBox 也不能弹出来。所以不要试图在 Windows 服务里通过这种方式来提示用户。因为可能根本没有用户登录计算机。Windows 服务的特点:在后台运行没有用户交互可以随 Windows 启动而启动三、 如何实现 Windows 服务?下面按“隔一定时间做一些相同的事情”的服务为例,说明 Windows 服务如何实现。先按普通 Windows 程序设计好你的程序逻辑。建立一个空白解决方案 WindowsService.sln添加 Windows 类库项目 ServiceBusiness

8、.csproj将 Class1.cs 改名为 ServiceBusiness.cs添加一个方法 Dothings(),这个方法用来每隔一段时间调用一次,做些周期性的事情。using System;namespace ServiceBusinesspublic class ServiceBusinesspublic void Dothings()/隔一段时间调用一次向解决方案添加一个 WindowsService.csproj将 Service1.cs 重命名为 Service.cs给 WindowsService 添加 ServiceBusiness 项目引用打开 Service.cs 代码视

9、图,向 Service 类添加成员ServiceBusiness.ServiceBusiness serviceBusiness;在构造函数里面对 serviceBusiness 实例化serviceBusiness = new ServiceBusiness.ServiceBusiness();在 using 位置添加 System.Theadingusing System.Threading;给 Service 类添加计时器Timer serviceTimer;添加 TimeCallback 方法,用于计时器调用 public void TimerCallback(object obj)/

10、隔一段时间调用一次serviceBusiness.Dothings();在 OnStart()方法中添加方法,用于启动计时器serviceTimer = new Timer(new TimerCallback(TimerCallback), state, 0, period);此处,state 用于保存状态,如果不需要,保存状态,可以传入 null。第三个参数 0 表示立即调用 TimerCallback 方法,如果不需要立即调用,可以传入period。period 是计时器的计时间隔,单位为毫秒。重载 OnPause ()和 OnContinue ()方法,对计时器进行控制。Service.

11、cs 代码如下using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.ServiceProcess;using System.Text;using System.Threading;namespace WindowsServicepublic partial class Service : ServiceBaseTimer serviceTimer;ServiceBusiness.Servic

12、eBusiness serviceBusiness;int period;object state;public Service()InitializeComponent();serviceBusiness = new ServiceBusiness.ServiceBusiness();protected override void OnStart(string args)/启动 timerperiod = ServiceSettings.Default.ServiceTimerIntervalSecond * 1000;serviceTimer = new Timer(new TimerCa

13、llback(TimerCallback), state, 0, period);protected override void OnStop()/停止计时器serviceTimer.Change(Timeout.Infinite, Timeout.Infinite);protected override void OnContinue()/重新开始计时serviceTimer.Change(0, period);protected override void OnPause()/停止计时器serviceTimer.Change(Timeout.Infinite, Timeout.Infini

14、te);public void TimerCallback(object obj)/隔一段时间调用一次serviceBusiness.Dothings();打开 Program.cs 文件为了调试方便,在 Main 方法中,直接加入调用 Dothings()。这样就可以在 IDE中方便调试程序。using System.Collections.Generic;using System.ServiceProcess;using System.Text;namespace WindowsServicestatic class Program/ / 应用程序的主入口点。/ static void Main(string args)#if DEBUGServiceBusiness.ServiceBusiness serviceBusiness = new ServiceBusiness.ServiceBusiness();/在调试模式下,直接调用serviceBusiness.Dothings(args);#elseServiceBase ServicesToRun = new ServiceBase new Service() ;ServiceBase.Run(ServicesToRun);#endif

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报