详解.net制作Windows服务程序和安装程序图解

本文详细讲解在.net开发Windows服务程序与安装程序制作图解教程,本文讲解的环境配置如下:
系统:WIN2003
.NET环境:VS2008
数据库:SQL2005
      一、创建window服务项目
      首先我们建一个window服务项目 :解决方案(右击)——> 增加 ——> 新建项目——>项目类型选择Windows——>模板选择Windows服务 ,如图:
      二、编写Window服务程序
      创建后会生成两个文件 Program.cs 和 Service1.cs ,其中 program.cs 这个文件不用动,里面已自动生成好了。我们在Service1.cs里增加所要的操作,里面有两个重写方法 OnStart 和 OnStop ,OnStart 方法表示服务启动的操作,OnStop 表示服务停止的操作,下面写了一个简单示例 :当服务启动后,调用远程一个WebService的Hello函数,并把返回的值写入到一个文件中。code如下:
 Code [http://www.xueit.com]/// <summary> /// 服务启动的操作 /// </summary> /// <param name="args"></param>  protected override void OnStart(string[] args) { StartHello(); } /// <summary> /// 服务停止的操作 /// </summary>  protected override void OnStop() { try { ThreadHello.Abort(); Flag = false; System.Diagnostics.Trace.Write("线程停止"); } catch (Exception ex) { System.Diagnostics.Trace.Write(ex.Message); } } private Thread ThreadHello; private void StartHello() { try { // 标准形式 //ThreadStart NewThreadStart = new ThreadStart(VoidName); //Thread NewThead = new Thread(NewThreadStart); //NewThead.Start(); ThreadHello = new Thread(new ThreadStart(Hello)); ThreadHello.Start(); System.Diagnostics.Trace.Write("线程任务开始"); } catch (Exception ex) { System.Diagnostics.Trace.Write(ex.Message); throw ex; } } private void Hello() { while (Flag) { localhost.AdvService la = new WindowsService1.localhost.AdvService(); try { string helloname = la.Hello("Andy"); // 调用远程WebService中的方法 writeInLog(helloname, false); // 把调用返回的数据写入到文件中 } catch (Exception ex) { System.Diagnostics.Trace.Write(ex.Message); throw ex; } Thread.Sleep(5000); } } /// <summary> /// 写入文件操作 /// </summary> /// <param name="msg">写入内容</param> /// <param name="IsAutoDelete">是否删除</param>  private void writeInLog(string msg, bool IsAutoDelete) { try { string logFileName = @"E:/Sample/PG_Sample/log.txt"; // 文件路径 FileInfo fileinfo = new FileInfo(logFileName); if (IsAutoDelete) { if (fileinfo.Exists && fileinfo.Length >= 1024) { fileinfo.Delete(); } } using (FileStream fs = fileinfo.OpenWrite()) { StreamWriter sw = new StreamWriter(fs); sw.BaseStream.Seek(0, SeekOrigin.End); sw.WriteLine("====================================="); sw.Write("添加日期为:" DateTime.Now.ToString() "/r/n"); sw.Write("日志内容为:" msg "/r/n"); sw.WriteLine("====================================="); sw.Flush(); sw.Close(); } } catch (Exception ex) { ex.ToString(); } }      例子很简单,方便理解,上面通过线程,每5秒执行一次操作,到这里,我们的服务以及服务实现的功能就已经写好了,下面怎么让客户端安装我们的服务呢?

这里才是我写这篇文章的目的!先要增加一个安装程序类,切换到视图窗口,右击——>增加安装程序,便会增加一个程序安装类文件 ProjectInstaller.cs,如图:

这里serviceProcessInstaller1 和 serviceInstaller1 有几个重要属性要设置,serviceInstaller1 中的StartType要设置成Automatic,表示随机启动,ServiceName表示服务名称,Description 表示服务的描述, DisplayName 表示显示名称。serviceProcessInstaller1 中的Account要设置成LocalSystem,表示本地系统帐号

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值