|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
您现在的位置: ChinaBeta.cn 中文IT资讯 >> 网盟学院 >> 编程类 >> ASP|ASP.NET >> 网管技术正文
推荐网管技术[多图]即将发布的Microsoft Of…推荐网管技术Asp生成静态网页
推荐网管技术让我穿过那道"墙"! 畅游网络应…推荐网管技术文件夹变身磁盘 查看共享有新招…
推荐网管技术防患于未然!终截者抗病毒软件…推荐网管技术主动防御!瑞星杀毒2008抢先评…
推荐网管技术玩转虚拟光驱:DAEMON TOOLS P…推荐网管技术速度超快 Discuz! 6.0.0试用手…
推荐网管技术当设计遇上PC:LG XPION A10图…推荐网管技术奇虎举证:各杀毒软件均报CNNIC…
推荐网管技术Google Earth 4.2加入繁体中文…推荐网管技术Photoshop CS3:蔚蓝梦幻风格婚…
推荐网管技术专业防护!瑞星防火墙2008测试…推荐网管技术挂载RAR文件 从认识到爱上WinM…
推荐网管技术让你冲浪随心所欲 如何访问被封…推荐网管技术轻装上阵!江民杀毒软件2008速…
推荐网管技术VMware Fusion苹果版全程图解(…推荐网管技术VMware Fusion苹果版全程图解(…
推荐网管技术从菜鸟出发!征服高清详细评测全…推荐网管技术VS2008和ASP.NET 3.5使用之初体…
推荐网管技术迅雷 快车 电驴 eMule下载飚速…推荐网管技术实战967种木马 木马清道夫2007…
推荐网管技术[多图]Ubuntu 7.04 初体验推荐网管技术东风吹战鼓擂 下载软件你选谁?
推荐网管技术若隐若现 Windows XP DirectX …推荐网管技术GPRS上网全攻略
推荐网管技术主流杀毒软件Vista兼容性横评推荐网管技术基于IRF的网络管理和业务管理解…
利用VS.NET快速开发Windows服务
Www.ChinaBeta.Cn 更新时间:2008-5-6

【ChinaBeta.Cn 网盟学院】
在很多应用中需要做windows服务来操作数据库等操作,比如

(1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份等
(2)在.net Remoting中利用windows服务来做Host

利用vs.net我们可以在几分钟之内建立其windows服务,非常简单

下面说一下步骤
1. 新建一个项目
2. 从一个可用的项目模板列表当中选择Windows服务
3. 设计器会以设计模式打开
4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上 (注意: 要确保是从组件列表而不是从Windows窗体列表当中使用Timer)
5. 设置Timer属性,Interval属性200毫秒(1秒进行5次数据库操作)
6. 然后为这个服务填加功能
7.双击这个Timer,然后在里面写一些数据库操作的代码,比如
SqlConnection conn=new SqlConnection("server=127.0.0.1;database=test;uid=sa;pwd=275280");
SqlCommand comm=-new SqlCommand("insert into tb1 (’111’,11)",conn);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
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下面)
15. 右击桌面上“我的电脑”,选择“管理”就可以打计算机管理控制台
16. 在“服务和应用程序”里面的“服务”部分里,你可以发现你的Windows服务已经包含在服务列表当中了
17. 右击你的服务选择启动就可以启动你的服务了
看看数据库是不是一秒多了5个记录啊

需要注意的是:
如果你修改了这个服务,路径没有变化的话是不需要重新注册服务的,如果路径发生了变化,需要先卸载这个服务InstallUtil.exe /u参数,然后再重新安装这个服务,不能直接安装。还有就是windows服务是没有界面的,不要企图用控制的输出方式来输出一些信息,你只能添加一个EventLog,通过WriteEntry()来写日志。

关于怎么用windows服务来做一个远程服务可以看一下http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT15.asp

问题
用以上说的建立了一个服务,启动后,timer却不起作用,sql不执行,不知道为什么?服务都是顺利启动的,但却不执行任务?

可以在 OnStart() 方法里加上 this.timer1.Enabled = true;
另外看一下this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed); 是否和你的事件关联上

如何实现可插拔的windows服务
如果只是实现普通需求非常容易,可以参考文章里的那几个blog。但是如果要做为一个企业级的应用,往往会有别的场景需求。这里描述了能在不改变系统结构的情况下,可以非常快速的支持新的服务要求,并且以多线程方式支持多种业务逻辑的weindows服务开发方法,最后是一些调试技巧。
文章地址: http://www.cnblogs.com/lodestar/archive/2007/04/18/718615.html

用C#创建Windows服务(Windows Services)
文章地址: http://caca.cnblogs.com/archive/2005/02/25/109028.aspx


我用C#写了一个服务,用定时器定时检测,不符合某个条件我就退出服务。

下面的示例使用 ServiceController 类检查 Telnet 服务的当前状态。如果该服务已停止,此示例将启动该服务。如果该服务正在运行,此示例将停止该服务。

// Toggle the Telnet service -
// If it is started (running, paused, etc), stop the service.
// If it is stopped, start the service.
ServiceController sc = new ServiceController("Telnet");
Console.WriteLine("The Telnet service status is currently set to {0}",
sc.Status.ToString());

if ((sc.Status.Equals(ServiceControllerStatus.Stopped))   
(sc.Status.Equals(ServiceControllerStatus.StopPending)))
{
// Start the service if the current status is stopped.

Console.WriteLine("Starting the Telnet service...");
sc.Start();
}
else
{
// Stop the service if its status is not set to "Stopped".

Console.WriteLine("Stopping the Telnet service...");
sc.Stop();
}

// Refresh and display the current service status.
sc.Refresh();
Console.WriteLine("The Telnet service status is now set to {0}.",
sc.Status.ToString());

总结
最近公司要我做这个,我看了相关的文章,便整理了一下.
实践的时候也出现了服务不执行操作的现象,希望大家一起共同探讨一下,相互学习.
Google

(责任编辑:hahack)

发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
热门文章 相关报道
普通网管技术 [ASP|ASP.NET]利用VS.NET快速开发Windows服务 (05-06)最新网管技术
普通网管技术 [ASP|ASP.NET]Asp.net中防止用户多次登录的方法 (05-06)最新网管技术
普通网管技术 [ASP|ASP.NET].NET图像编程(GDI+)自制“小屏… (05-06)最新网管技术
普通网管技术 [ASP|ASP.NET].net Framework 2.0下发送邮件的… (05-06)最新网管技术
普通网管技术 [ASP|ASP.NET]为ASP.NET MVC框架添加AJAX支持 (05-06)最新网管技术
普通网管技术 [ASP|ASP.NET]如何用.NET技术在线生成网站LOGO (05-06)最新网管技术
普通网管技术 [ASP|ASP.NET]安装VS 2008最终版前卸载VS 2008… (05-06)最新网管技术
普通网管技术 [ASP|ASP.NET]ASP.Net 2.0中的5个数据控件 (05-06)最新网管技术
普通网管技术 [ASP|ASP.NET]一个生成.NET API文档的工具Sand… (05-06)最新网管技术
普通网管技术 [ASP|ASP.NET]ASP.NET 2.0 中跨网页提交的三种… (05-06)最新网管技术
  • Asp.net中防止用户多次登录…

  • .NET图像编程(GDI+)自制“…

  • .net Framework 2.0下发送邮…

  • 为ASP.NET MVC框架添加AJAX…

  • 如何用.NET技术在线生成网站…

  • 安装VS 2008最终版前卸载VS…

  • ASP.Net 2.0中的5个数据控件

  • 一个生成.NET API文档的工具…

  • ASP.NET 2.0 中跨网页提交的…

  • 何在ASP.NET中下载文件

  •   网友评论内容:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    I D *
    邮 箱
    主 页
    评 分 1分 2分 3分 4分 5分
    评 论

    关于我们  中国·国家信息产业部{粤ICP备06006652号}{陇ICP备06002562号}
    版权所有:『AK网盟基地』站长:Hahack | QQ:80505955 | E-mail:Hahack@Gmail.com
    Copyright (C) 2005-2007  akhack.org|chinabeta.cn All Rights Reserved