WEB开发网
开发学院软件开发C语言 C#发现之旅:C#开发Windows Service程序(上) 阅读

C#发现之旅:C#开发Windows Service程序(上)

 2009-04-06 08:24:20 来源:WEB开发网   
核心提示: 图片看不清楚?请点击这里查看原图(大图),客户端软件还能设置服务监视的目录,C#发现之旅:C#开发Windows Service程序(上)(5),系统设置对话框为软件设计命令行参数设计一般而言,我们将服务和客户端分成两个C#工程开发,但功能性代码还在运行,可以调试,但这里为了方便我们只在一

C#发现之旅:C#开发Windows Service程序(上)

图片看不清楚?请点击这里查看原图(大图)。

客户端软件还能设置服务监视的目录,系统设置对话框为

C#发现之旅:C#开发Windows Service程序(上)

软件设计

命令行参数设计

一般而言,我们将服务和客户端分成两个C#工程开发,但这里为了方便我们只在一个工程中实现服务器和客户端软件的开发。Windows服务是不能显示图形化用户界面的,但并不是说Windows服务的软件中不能包含显示图形化用户界面的软件模块。我们完全可以编写一个EXE,其中包含服务器和客户端两个相互独立的软件模块。直接执行EXE将以服务模式运行,若带有命令行参数将以客户端模式运行。为此我们设计了如下的命令行参数

命令行参数
功能
无任何参数
以服务模式运行,调用ServiceBase.Run函数来运行服务。
/install
调用InstallUtil.exe安装服务,将EXE自己注册到Windows服务管理器中。
/uninstall
调用InstallUtil.exe卸载服务。
/client
以客户端模式运行,显示图形用户界面。
/debug
以调试模式下运行,方便VS.NET对服务的操作过程提供调试。

使用VS.NET调试服务是一个比较麻烦的事,首先我们得安装并运行服务,然后使用VS.NET的菜单项目“工具-附加到进程”的操作来附加到服务程序,然后设置断点进行调试,其中OnStart函数是没有办法设置断点调试的。为此我们专门添加一个“/debug”命令行参数使得程序不进入服务模式,而是直接运行提供服务内容的功能性代码,然后主线程休眠,但功能性代码还在运行,可以调试。这样我们在VS.NET中设置断点后可以直接运行进行调试了。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:发现 之旅 开发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接