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