您的位置:首页 > 数据库

Window Service 创建:在后台执行一个服务,可定时做一些操作,如轮询数据库,定时发邮件 .

2013-10-29 20:50 525 查看
1,Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合。它没有用户界面,并且也不会产生任何可视输出。任何用户消息都会被写进Windows事件日志。计算机启动时,服务会自动开始运行。它们不要用户一定登录才运行,它们能在包括这个系统内的任何用户环境下运行。通过服务控制管理器,Windows服务是可控的,可以终止、暂停及当需要时启动。

注:因任何消息都会写到windows事件日志,故当服务启动不了的时候如:“服务启动后又停止了。一些服务自动停止 如果它们没有什么可做的”这种问题出现时,可打开控制面板-管理工具-事件查看器:查看应用程序的日志

2,创建方法:

1. 新建一个项目 从一个可用的项目模板列表当中选择Windows服务

• OnStart – 控制服务启动执行的代码 • OnStop – 控制服务停止执行的代码

2,添加安装程序

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

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

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

4. 设置serviceInstaller1组件的属性:

1) ServiceName = My Sample Service

2) StartType = Automatic

5. 设置serviceProcessInstaller1组件的属性

1) Account = LocalSystem

NetworkService 在当前正使用 NetworkService 帐户运行的提供程序宿主进程中激活提供程序。

LocalService 在当前正使用 LocalService 帐户运行的提供程序宿主进程中激活提供程序。

LocalSystem 在当前正使用 LocalSystem 帐户运行的提供程序宿主进程中激活提供程序。

6. 生成解决方案

3,安装

1, 打开Visual Studio .NET命令提示

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

3. 执行命令“InstallUtil.exe MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。

或在.net framework的C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 执行:installutil 服务程序路径+文件名.exe

4, 卸载用:installutil /u 服务程序路径+文件名.exe

4,调试: 服务不能象普通应用程序那样,只要简单地在开发环境下执行就可以调试了。服务必须首先被安装和启动.

1. 安装服务并启动, 设置程序断点

2. 点击“调试”菜单

3. 点击“进程”菜单

4. 确保 显示系统进程 被选

5. 在 可用进程 列表中,把进程定位于你的可执行文件名称上点击选中它

6. 点击 附加 按钮

7. 点击 确定

注:在第5步时若服务为灰色,附件上到….选择中:调试以下代码类型!

3, 定时器使用

1,命名空间 System.Timers; Timer _timer = new Timer();

2,方法及属性

AutoReset 获取或设置一个值,该值指示 Timer 是应在每次指定的间隔结束时引发 Elapsed 事件,还是仅在指定的间隔第一次结束后引发该事件。true时Elapsed定时执行,false执行一次停止

Enabled 获取或设置一个值,该值指示 Timer 是否应引发 Elapsed 事件。

Interval 获取或设置引发 Elapsed 事件的间隔。

定时事件:_timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

private void OnTimedEvent(object source, ElapsedEventArgs e) { }

(2)控件添加

4,实例:定时插入文本

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.Linq;

using System.ServiceProcess;

using System.Text;

using System.IO;

using System.Timers;

namespace MyServices

{

public partial class Service1 : ServiceBase

{

string filePath = “F:\\temp.txt”;

static int i = 0;

Timer _timer = new Timer();

public Service1()

{

InitializeComponent();

}

protected override void OnStart(string[] args)

{

_timer.AutoReset = true;

_timer.Interval = 2000;

_timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

_timer.Start();

}

private void OnTimedEvent(object source, ElapsedEventArgs e) {

Stream fs = File.OpenWrite(filePath);

TextWriter sw = new StreamWriter(fs);

i++;

sw.WriteLine(i.ToString() + “, hi, this is my first Services”);

sw.Flush();

sw.Close();

}

protected override void OnStop()

{

Stream fs = File.OpenWrite(filePath);

TextWriter sw = new StreamWriter(fs);

sw.WriteLine(“panel !!!!!!!!!!!!!!!”);

sw.Flush();

sw.Close();

}

}

}

转载:/article/7760489.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐