zoukankan      html  css  js  c++  java
  • C# 使用windows程序控制window服务

    最近在做一个大型项目的时候,需要window服务来做扫表倒表,但是又最好能够随时远程登录后控制,并且可以传递一些参数进去让windows服务与外界有些交互,并得到控制,于是,自己研究了一番,现在,把一些体会拿来跟大家一起体会。
    在C# 中使用一个System.ServiceProcess 命名空间下的ServiceControl 来对windows服务进行控制,其实在底层是SCM(service control manager)。
    咱们开始来一步一步操作。
    第一步 :添加一个引用,System.ServiceProcess




    第二步:从vs2005的服务器资源管理器来拖动一个服务示例到设计界面。


    第三步:编写控制服务的代码
    当把一个服务拖动到设计界面的时候,就创建了一个基于某个服务的服务控制组件实例,ServiceControl1,
    此实例有许多方法可以控制服务的状态,以及执行自定义命令,执行自定义命令要注意的一点就是命令只能传递一个int类型的参数,而且这个参数有限制大于128,小于256,就是这个限制条件害得我郁闷了好久,我一直传递的1,2,3之类的参数,老是说报错。。。。最后在google中的代码搜索中找到了答案。
    当然在windows服务里面你需要重写一个方法,示例如下:
    protected override void OnCustomCommand(int command)
            {
                if (command == 100)
                {
                    StreamWriter sw = new StreamWriter(@"C:\xx.txt", true);
                    sw.WriteLine("command is "+command+"  " + DateTime.Now.ToString());
                    sw.Close();
                }
                else if (command == 200)
                {
                    StreamWriter sw = new StreamWriter(@"C:\xx.txt", true);
                    sw.WriteLine("command is "+command +" "+ DateTime.Now.ToString());
                    sw.Close();
                }
            }
    代码的其他部分就没有什么好说的了,点击这里<a target=blank src='https://files.cnblogs.com/FrameWork/WindowsApplication1.rar'>下载示例代码</a>
    转载注明出处尊重别人也是尊重自己
  • 相关阅读:
    Neko's loop HDU-6444(网络赛1007)
    Parameters
    SETLOCAL
    RD / RMDIR Command
    devenv 命令用法
    Cannot determine the location of the VS Common Tools folder.
    'DEVENV' is not recognized as an internal or external command,
    How to change Visual Studio default environment setting
    error signing assembly unknown error
    What is the Xcopy Command?:
  • 原文地址:https://www.cnblogs.com/liubaolongcool/p/2059213.html
Copyright © 2011-2022 走看看