一个windows服务程序的编写过程及心得(更新中)

 

windows程序编写流程

       
  1
、在Visual Studio 建立一个新的windows务项
RemoteServer1    
  2
、打Service1码视图里面已经有OnStartOnStop两个方法了OnStart就是启动服务时要做的事,OnStop是关闭服务时要做的事。

我做的服务大的框架是监视一个文件夹,只要里面有新的.txt文件就读出它的内容,然后将其删掉。这就要用到文件监视FileSystemWatcher了,顺便又学习了一下文件监视的知识。)

  3、切设计视图,右-添加安装程序    
  4
、切到新生成的ProjectInstaller.cs设计视图,找到serviceProcessInstaller1Account属性LocalSystemserviceInstaller1ServiceName属性RemoteServer1(服的名字),StartType属性Automatic(系候自
     
 
6、建立一个新的安装RemoteServerSetup(我们为刚才那个服建立一个安装目)
   
  7
、右-添加-出-主出-选择RemoteService1-确定
   
  8
、右视图-自定操作-自定操作上右-添加自定操作-打开应用程序文件选择刚才那个主出-确定
   
  9
、重新生成个安装目-右-安装

69步为上网查的资料,我的做法是点项目右键的编译生成,如果没有错误就会生成一个和项目同名的.exe文件,用Visual Studio Tools里的命令编译器运行如下命令:

installutil 上面.exe文件完整的路径

(卸载服务是installutil /u 上面.exe文件完整的路径)

10、在服管理器中(我的电脑-右-管理-服用程序-服)找到RemoteServer1,启

 

 

注意:

1.              如果要一次生成多个服务,要将RemoteService.Designer.cs文件中的

        this.ServiceName = "RemoteService1"; 删掉。

2.   需要一次生成多个服务时,不能调用静态方法,否则多个服务共用一个存储区。(比如生成日志文件的方法,如果将其设置成静态的,日志将生成到最后启动的服务的日志文件里)

3.   在OnStop()方法里也要有关闭每个服务的代码。

4.   最好在OnStart()和OnStop()中都写上try..catch,在catch中用System.Environment.Exit(0)结束。否则这两部分出错了服务就有可能死在那里,删也删不掉。

5.              服务程序有改动后,要重新编译,在重新编译之前把服务要关掉。

6.              OnStart()中如果程序出错或捕捉到异常要用System.Environment.Exit(0);停止服务,在程序别的地方出现问题用Return;就行了。

 

文件监视:

FileSystemWatcher m_FileWatcher = new FileSystemWatcher();

 

//文件监视事件,括号里为方法名(触发的事件),在这个方法中写具体的操作

FileSystemEventHandler m_fileSystemEvent = new FileSystemEventHandle(fileSystemWatcher1_Created);

 

string m_path =“”; //监视的文件夹的路径

 

m_FileWatcher.BeginInit();

m_FileWatcher.Path = m_path;

m_FileWatcher.Created += m_fileSystemEvent;   //  .Changed/.Deleted/.Disposed/.Renamed

m_FileWatcher.EnableRaisingEvents = true;         //文件监视事件可以运行

m_FileWatcher.EndInit();

 

private void fileSystemWatcher1_Created(object sender, FileSystemEventArgs e)

{

m_FileWatcher.WaitForChanged(System.IO.WatcherChangeTypes.Changed, 500);

}

 

由于本项目还在测试和维护中,以后遇到的问题及解决方法也会更新到这篇文章中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值