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>
    转载注明出处尊重别人也是尊重自己
  • 相关阅读:
    osg::BlendFunc来设置透明度
    LCA(Tarjan)
    CODEVS1073 家族 (并查集)
    CODEVS1533 互斥的数(哈希表)
    2014-12-4
    BZOJ2661 连连看 (费用流)
    2014-11-30
    JAVA语法基础作业——动手动脑以及课后实验性问题
    课后作业01——相加
    再读大道至简第二章
  • 原文地址:https://www.cnblogs.com/liubaolongcool/p/2059213.html
Copyright © 2011-2022 走看看