vs2008 创建windowsservice

写在前面,本文参考多处网上文章及自己的体会心得

下面说一下步骤
1. 新建一个项目
2. 从一个可用的项目模板列表当中选择Windows服务
3. 设计器会以设计模式打开
4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上

此处要注意的:服务一跑起来,唉,怎么回事,时间到了怎么没有执行事件呢???????
后来,我找很多资料才知道,这个Timer控件是winForm下的,不能用在windows服务程序中.
怎么办呢.......
打开"工具箱"---右键---"选择项"---找到Timer控件,看好了,这个Timer控件的是system.Timer下的.可不是System.Windows.Form.然后添加.

5. 设置Timer属性和Interval属性

在InitializeComponent();的下面
timer1.Enabled = true;
//timer1.Interval = 1000 * 60 * 60; //一小时执行一次
timer1.Interval = 1000 * 1;

6. 然后为这个服务填加功能


7.双击这个Timer,然后在里面写一些要操作的代码,比如

string sql = "insert into a (aa) values ('" + DateTime.Now.ToString() + "')";
ExcuteSql(sql);

8. 将这个服务程序切换到设计视图


9. 右击设计视图选择“添加安装程序”


10. 切换到刚被添加的ProjectInstaller的设计视图


11. 设置serviceInstaller1组件的属性:
     1) ServiceName = My Sample Service 在我的电脑-管理-服务 中出现的服务的名称
     2) StartType = Automatic (开机自动运行)


12. 设置serviceProcessInstaller1组件的属性   Account = LocalSystem


13. 改变路径到你项目所在的bin\Debug文件夹位置(如果你以Release模式编译则在bin\Release文件夹)


14. 执行命令“InstallUtil.exe MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。(InstallUtil这个程序在WINDOWS文件夹\Microsoft.NET\Framework\v1.1.4322下面)

此处因为是VS2008创建的,所以要用.NET2.0的installutil注册服务

打开CMD窗口--开始--运行--输入CMD,回车
//注册服务命令


cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727


InstallUtil ....exe 路径


15. 右击桌面上“我的电脑”,选择“管理”就可以打计算机管理控制台


16. 在“服务和应用程序”里面的“服务”部分里,你可以发现你的Windows服务已经包含在服务列表当中了


17. 右击你的服务选择启动就可以启动你的服务了


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sinton/archive/2009/12/29/5097290.aspx

 

 

所犯的错误:

(1)---- 可以安装成功,可是timer一直没能执行;;;错误原因: Timer控件的是system.Timer下的.可不是System.Windows.Form.然后添加.

(2)---- 可以执行了,可是提示"类型初始值设定引发异常"---使用了sql查询,而没有配置sql对应的链接字符串,添加APP.config配置文件,配置对应字符串,如: 

 <!-- 数据库配置 -->
  <connectionStrings>
    <add name="DBConnectionString" connectionString="Data Source=IBM-DC313B70E57\SQLEXPRESS;Initial Catalog=NIKON_SIS;Integrated Security=True" providerName="System.Data.SqlClient" />    
  </connectionStrings>

(3)---使用了动态链接库,要添加对应的引用(dll文件).

(4)---测试可以用向一个文本文件中写内容;或者使用EventLog记录信息

 

ExpandedBlockStart.gif 代码
                 #region  use write file to test
                
// use EventLog test
                EventLog log;
                log 
=   new  EventLog();
                log.Source 
=   " timerMain_Elapsed " ;
                log.WriteEntry(
" begin timer function! " , EventLogEntryType.Information);

                
// use FileStream test
                System.IO.FileStream fstream  =   new  System.IO.FileStream( " E:/a.txt " , System.IO.FileMode.Append);
                System.IO.StreamWriter stw 
=   new  System.IO.StreamWriter(fstream);
                stw.WriteLine(
" test " );
                stw.Flush();
                stw.Close();
                fstream.Close();
                
#endregion

 

 对于eventLog记录的信息可以在电脑--管理--事件查看器中查看(至于是应用程序还是系统,和所设置的Account属性有关)

(5)调试时,选择附加到进程,进程的名字与项目名字相同,而不是服务类名相同..设置断点,服务运行到断点的话就进入了调试..当运行结束后,如需再次调试,则需再次附加到进程

转载于:https://www.cnblogs.com/9421/archive/2010/05/04/1727075.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值