.net开发windows服务小结

来源:互联网 发布:jvm怎么看java的机械码 编辑:程序博客网 时间:2024/05/05 09:13
源地址:  http://www.cnblogs.com/zzgblog/p/4595839.html
今天学习了在.net下创建一个windows服务,总结一下学习心得。
    开发环境:visual studio 2015
 
一、编写程序
  (1)创建一个空解决方法
  (2)添加一个控制台应用程序项目
  (3)添加一个Windows服务,如下所示:

(4)右键查看代码

 看到如下代码:
public WindowsService(){    InitializeComponent();}protected override void OnStart(string[] args){            }protected override void OnStop(){            }
 其中,OnStart方法在 启动服务时执行;OnStop方法在 停止服务时执行;还有两个重载方法:OnPause、OnContinue,分别在 暂停服务时执行、恢复服务时执行;它们对应于下图所示的操作:

  

(5)添加代码:

private Thread timerThread;/// <summary>/// 启动服务时执行/// </summary>/// <param name="args"></param>protected override void OnStart(string[] args){    File.AppendAllText("D:\\1.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":windows服务开始工作!\r\n", Encoding.Default);    timerThread = new Thread(new ThreadStart(Start));    timerThread.Start();}/// <summary>/// 停止服务时执行/// </summary>protected override void OnStop(){    timerThread.Abort();    File.AppendAllText("D:\\1.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":windows服务结束工作!", Encoding.Default);}private void Start(){    while (true)    {        using (StreamWriter writer = new StreamWriter("D:\\1.txt",true,Encoding.Default))        {            writer.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":每十秒钟输出一次!");        }        Thread.Sleep(10 * 1000);    }}

(6)安装程序,设置属性

  在设计器中添加安装程序

 

    会生成一个ProjectInstaller.cs文件,如下图所示:

    

    然后需要做两件事情:

      ①设置serviceProcessInstaller1控件的Account属性为“LocalSystem”


      ②设置serviceInstaller1组件的StartType属性为Automatic,把服务设置为自动启动

  (7)启动服务

    打开vs的开发人员命令提示 工具 以管理员身份运行

    

    执行如下所示命令:

    ①进入到项目所在文件夹,并进入\bin\Debug\路径下

    ②安装服务命令:installutil ConsoleApplication.exe,然后就可以在服务列表中看到我们启动的服务:

    

    

    卸载服务的命令是:installutil /u ConsoleApplication.exe

    当我们修改代码后,需要把服务先卸载,才能重新生成成功

    ③启动服务

      启动服务后,等一会儿再停止服务,然后我们打开D盘下的1.txt文档,可以看到下图所示的结果:

    

 

二、调试

  在服务运行的状态下,我们找到菜单栏,调试——>附加到进程

  

  注意勾选“显示所有用户的进程”,选项,找到我们的进程,点击附加,然后在程序中添加断点,就可以调试程序了!

  

 

另:昨天又尝试把windows服务部署在另外一台没有安装virtual studio的机器上,没有了 vs的开发人员命令提示,又查阅了半天资料,才找到解决办法,再次贴出来供以后查阅:

  主要是使用sc命令,sc是用于与服务控制管理器和服务进行通信的命令行程序。

  关于sc命令的详细说明,我还没有详细了解,目前只会使用创建、删除命令;SC命令的更多用法请在cmd命令提示符中执行help sc 查看

  创建服务<将其添加到注册表>,示例:sc create MsgService binpath= "F:\Message Service\Service.exe" displayname= "短信服务" start= auto

    其含义表示创建一个名为MsgService的服务;地址为F:\Message Service\Service.exe,这个地址指向可执行程序;显示的名字为“短信服务”;自动启动

  <从注册表>删除服务,示例:sc delete MsgService

  sc命令执行时注意:在赋值上确保等号后面有个空格,比如start= auto,auto前面有个空格,如果没有空格将无法执行

  知道使用什么命令了,但是都需要把什么文件部署到另外一个计算机呢?

  不需要右键发布项目,只需要把工程目录bin\Debug\下的所有文件拷贝到服务器上即可(项目名称与上面不符合,主要是项目里的debug文件夹中的文件),如下图所示:

  

  然后进入服务列表,启动服务即可


原创粉丝点击