求一个C#创建winservices教程说解
关键是说细,要看得懂!
关键是说细,要看得懂!
答案:打开VS 2005,点击File->New->Project…。,在创建工程向导中选择Windows service模板,如下图所示:
在工程名输入框中,输入TestService然后点击OK.VS为我们生成了最基本的代码,我们将Service的名称改为我们期望的名称,在solution explorer中右键点击vs自动生成的service文件“Service1.cs”,在弹出的菜单中选择Rename,输入“MyFirstService”,然后切换到设计视图,也就是在solution explorer中双击MyfirstService.cs,在Property Explorer中将ServiceName属性改为MyFirstService,这时一个可运行的windows service已经创建成功。我们添加一些代码来测试一下这个service,最简单的测试方式就是向windows event log里来添加一些消息以显示我们的Service的状态。
我们需要一个EventLog组件向windows log中添加信息,在solution explorer中双击MyfirstSerice文件切换到设计视图,将工具箱中的EventLog组件拖到设计视图中,我们保留EventLog组件的默认名称eventLog1.选中eventLog1,在property explorer中将Log属性选为Application,在Source属性中输入“MyFirstService”。接下来,我们在设计视图的空白处,右键点击,并选择View Code切换到代码视图,在OnStart和OnStop方法里输入代码实现日志写入,代码如下:
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
eventLog1.WriteEntry("windows service start!");
string path = @"d:\wind\wind.txt";
FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamWriter sw = new StreamWriter(fs);
sw.BaseStream.Seek(0, SeekOrigin.End);
sw.WriteLine("services start success!");
sw.WriteLine("services write first line!");
sw.WriteLine("services write second line!");
sw.WriteLine("services write end!");
sw.Flush();
sw.Close();
}
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
eventLog1.WriteEntry("windows service stop!");
string path = @"d:\wind\wind.txt";
FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("services stop success!");
sw.Flush();
sw.Close();
}
2.安装service,我们要用到IntallUtil.exe这个程序,这个程序位于C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727.点击开始菜单,选择“运行”,在运行对话框中输入cmd,进入到命令行窗口,输入cd :\WINDOWS\Microsoft.NET\Framework\v2.0.50727,进入到这个目录,然后输入installutil d:\wind\testserveice.exe, installutil后边的内容就是我们的工程生成的可执行程序的路径,情根据需要修改。
如果你给ServiceInstaller1的StartType设为Automatic的话,安装完服务,服务已经运行起来了,如果StartType是Manual的话,你需要手动启动。现在我们进入“服务”,要打开“服务”,请单击“开始”,指向“设置”,然后单击“控制面板”。依次单击“性能和维护”、“管理工具”,然后双击“服务”。在里边你应该能够看到我们制作的Service MyFirstService.在这里边,我们可以启动,关闭服务,还可以设置服务的启动类型。然后,我们看看服务有没有正确的写入日志,我们需要进入到事件查看器,要打开“事件查看器”,请单击“开始”,指向“设置”,然后单击“控制面板”。单击“性能和维护”,单击“管理工具”,然后双击“事件查看器”。如下图所示,我们的消息已经成功的写到了系统日志里了。
如果你不需要这个Service了,仍然使用InstallUtil这个程序来卸载,不过在InstallUtil后跟参数 –u,比如installutil –u d:\wind\testserveice.exe
Service的调试方法与普通的程序调试方法是不一样的。我来介绍一下。
1. Build你的项目
2. 设置断点,因为我们的Service非常的简单,没有什么执行逻辑,所以设置断点没有任何意义,大家可以自己写一些代码来实践。一般来说,我们服务里需要用到一个另外的线程来执行任务,你需要在线程的执行代码中来设置断点。
3. 安装service,我们前边有介绍如何安装。
4. 如果你的Service启动类型是手动(Manual),你需要到“服务”里启动你的Service.一般来说,如果你的service在开发阶段,我推荐你将Service的启动类型设置为Manual,这样便于调试,因为如果service在运行过程中,你将无法build工程。
5. 在VS中,从菜单中选择Debug->Attach Process…。,将会出现下图:
里边列出了正在运行的进程,如果你找不到自己的service,请选中Show processes from all users.在Available processes列表中选中我们的service所在的进程TestService,然后点击Attach按钮,如果你设置的断点合理的话,那么,程序就会停在断点处,接下来你就可以进行调试了。
上一个:PHP上传一般需要开启什么函数
下一个:C#与JAVA谁有更大优势?