C#编写winservice的遇到的问题总结
2010-10-22 10:58
246 查看
项目中遇到了一个要写winservice做为一个监视程序在服务器端监视服务的运行状况,并生成相关的文档发送到指定的邮箱里面,如果说是做为一般的应用程序来写的话这个问题很简单,但是在服务程序里面问题就来了.
首先是生成文档的问题,当然这一个问题在我的另一日志里面已经有一说明,
另外一个就是启动onStart的时候,安装好了服务程序过后,第一次启动会报一个1053的错误代号,找了很久也没有找到问题出版,甚至是把里面的相关代码全部删除这个问题依然存在,
然而,另外新建一个服务的话,什么也不写,就不会出这个问题了;现在一步一步的找问题所在.
首先,在运用中,很多地方会用到全局变量,所以一开始就定义好一个变量
private System.Timers.Timer timerTask = new System.Timers.Timer();
这个变量用来做监视用,就是每一段时间写一次数据,然后写一个Elapsed事件,这样就可以运行查看效果了
timerTask.Elapsed += new System.Timers.ElapsedEventHandler(timerTask_Elapsed);
这时候问题就来了,在服务里面启动这个服务,每次启动都在启动两次才能启动成功,很郁闷!开始我以为是Elapsed里面的问题,把事件里面的代码全部注释掉,问题还是存在,那么肯定不是这里的问题了,
然后把onStart里面的代码也注释掉,依然如故
最后所有的相关方法代码都注释掉了,还是这个问题,最后再看全局变量的问题了,把这个变量注释掉过后,问题解决了!但是,如果这个变量不存在的话怎么来监视呢,有个解决方案,就是在onstart事件里面定义这个变量,这就运行就没问题了!
但是这样他就成了一个局部变量了,有些时候我们必须要用到全局变量的时候那怎么办呢.经过多次修改最后发现这样的一个问题------那就是在定义全局变量的时候,不能给这个变量进行初始化操作
后来,全局变量定义在好,但没有初始化,如下
private System.Timers.Timer timerTask = null;
这样程序就不会启动两次才能启动成功了,这时我们只需要在onstart事件里面对这个变量进行初始化即可!
如
timerTask = new System.Timers.Timer();
这样就可以在其他地方对这个变量进行操作了!
以上就是对这次问题的总结!没有什么高深的,只是为了记录编写过程中遇到的一些问题以及解决方案,以备不时之需!
本文出自 “Laputaliya” 博客,请务必保留此出处http://laputaliya.blog.51cto.com/751941/409048
首先是生成文档的问题,当然这一个问题在我的另一日志里面已经有一说明,
另外一个就是启动onStart的时候,安装好了服务程序过后,第一次启动会报一个1053的错误代号,找了很久也没有找到问题出版,甚至是把里面的相关代码全部删除这个问题依然存在,
然而,另外新建一个服务的话,什么也不写,就不会出这个问题了;现在一步一步的找问题所在.
首先,在运用中,很多地方会用到全局变量,所以一开始就定义好一个变量
private System.Timers.Timer timerTask = new System.Timers.Timer();
这个变量用来做监视用,就是每一段时间写一次数据,然后写一个Elapsed事件,这样就可以运行查看效果了
timerTask.Elapsed += new System.Timers.ElapsedEventHandler(timerTask_Elapsed);
这时候问题就来了,在服务里面启动这个服务,每次启动都在启动两次才能启动成功,很郁闷!开始我以为是Elapsed里面的问题,把事件里面的代码全部注释掉,问题还是存在,那么肯定不是这里的问题了,
然后把onStart里面的代码也注释掉,依然如故
最后所有的相关方法代码都注释掉了,还是这个问题,最后再看全局变量的问题了,把这个变量注释掉过后,问题解决了!但是,如果这个变量不存在的话怎么来监视呢,有个解决方案,就是在onstart事件里面定义这个变量,这就运行就没问题了!
但是这样他就成了一个局部变量了,有些时候我们必须要用到全局变量的时候那怎么办呢.经过多次修改最后发现这样的一个问题------那就是在定义全局变量的时候,不能给这个变量进行初始化操作
后来,全局变量定义在好,但没有初始化,如下
private System.Timers.Timer timerTask = null;
这样程序就不会启动两次才能启动成功了,这时我们只需要在onstart事件里面对这个变量进行初始化即可!
如
timerTask = new System.Timers.Timer();
这样就可以在其他地方对这个变量进行操作了!
以上就是对这次问题的总结!没有什么高深的,只是为了记录编写过程中遇到的一些问题以及解决方案,以备不时之需!
本文出自 “Laputaliya” 博客,请务必保留此出处http://laputaliya.blog.51cto.com/751941/409048
相关文章推荐
- 编写第一个XML-RPC程序遇到的问题总结
- C++编写网页控件,遇到的问题总结
- C# 系统开发历程 经验总结及遇到问题 之 无法更新有效的 更新要求有效的 UpdateCommand
- C++编写网页控件,遇到的问题总结
- asp.net c#.net项目中使用总结,遇到的各个问题的汇总
- C# 经验总结及遇到问题:无法更新有效的 UpdateCommand
- 使用VS编写ASP.NET(C#)遇到问题及解决(持续补充)
- 在C#中使用ASV封装编程实践中遇到的问题总结
- C#编写WINNT服务,随便解决安卓开发遇到的5037被众多程序无节操占用的问题
- C#读取C++编写的DLL时遇到的一个问题
- 编写Android app更新模块遇到的问题分析与总结
- 编写Android app更新模块遇到的问题分析与总结
- c# 编写activeX遇到的有关问题
- STM32IAP升级-----编写IAP升级遇到的问题总结
- C#调用C++代码遇到的问题总结
- 用C#编写积分程序时遇到的问题
- html+css编写简单网页遇到的问题总结
- C# 经验总结及遇到问题:水晶报表错误,无法在清单资源中找到该报表
- 从代码都发布遇到的问题总结(C#调用非托管dll文件,部署项目)
- C++编写网页控件,遇到的问题总结