.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的这个

posted @ 2010-04-08 09:27  neverlost  Views(357)  Comments(2Edit  收藏  举报