zoukankan      html  css  js  c++  java
  • .net下开发windows服务的经验

    首先由于windows服务不能够在vs2008里直接进行调试所以 所以在开发的时候可以用另一个办法来调试:
    在program.cs文件里main方法做如下修改:
                #if (!DEBUG)
                   System.ServiceProcess.ServiceBase[] ServicesToRun;
                   ServicesToRun = new System.ServiceProcess.ServiceBase[]
                   {
                       new 你的服务类初始化();//就是默认创建的那个部分
                   };
                   System.ServiceProcess.ServiceBase.Run(ServicesToRun);
                #else
                   // 你要调试的方法入口
                     System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
                #endif

    当项目处于debug时,则可以进行调试.

    其次 一般写这服务很多都需要定时机制,而普通的windows的form类的timer控件在服务里是不能使用的
    所以只有使用下面的代码:
              System.Timers.Timer t = new System.Timers.Timer(doubleTimeInterval); //定时
                t.AutoReset = true; //自动重置
                t.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed); //加载方法
                t.Start();

    当开发调试工作已经完成就需要在系统里安装服务了.
    点击工程名右键添加安装程序类,创建,然后在设计窗体里看到这个安装程序类有2个组件,一个是设置服务名称的,另一个设置自动启动还有服务使用的账号这些东西.
    都搞好了 然后生成文件.

    在vs2008菜单的Visual Studio Tools里有个Visual Studio 2008 命令提示工具 vista下以管理员方式运行,然后 键入命令
    installutil 生成的文件地址\生成的exe文件 然后可以去服务里启动 好了 服务运行了吧.
    当然 如果要卸栽 就在刚才的命令里加上 \u

    如果要知道服务在运行的时候究竟情况怎么样,或者想知道时间点是否进入了,那么可以在代码增加记录日志类:
                EventLog  eventLog1 = new EventLog();
                eventLog1.Source = "service";
                eventLog1.WriteEntry("Service start");
    另外注意下 如果需要读取配置文件 则应该是 后缀为exe.config的这个

  • 相关阅读:
    通过Ajax的方式执行GP服务
    Arcgis for js之GP实现缓冲区计算
    sde用sql实现erase
    OL2中设置鼠标的样式
    OL2中重置地图DIV大小后地图的联动
    OL2中的多地图联动展示
    Codeforces Round #357 (Div. 2) Heap Operations
    POJ-1847 Tram
    【转】一些图论、网络流入门题总结、汇总
    POJ-2398 Toy Storage
  • 原文地址:https://www.cnblogs.com/neverlost/p/1706967.html
Copyright © 2011-2022 走看看