bangbus magnet:?:C#制作Windows service服务系列三
来源:百度文库 编辑:偶看新闻 时间:2024/04/29 13:02:24
C#制作Windows service服务系列三--制作可控制界面的windows服务(windows service)
本文将重点介绍下如何通过界面控制肉眼看不到的windows service。其实主要用到的类是:
ServiceController ,可以看官方 的说明,如果急于看到结果,请直接往下看。
准备工作:假定我们已经做好一个wondows service,并且已经部署,服务名为pingServiceDemo,
图片看不清楚?请点击这里查看原图(大图)。
下面我们制作一个可控制的界面来操作这个windows service
开始:
第一步:新建一个winform项目,名为 CtrlPingService,添加System.ServiceProcess.dll的引用。
第二步:定义变量,添加按钮事件,主要代码如下:
private
System.Windows.Forms.Button btnStart;
private
System.Windows.Forms.Button btnStop;
private
System.Windows.Forms.Button btnExit;
private
System.ServiceProcess.ServiceController sController;
private
Label lbInfo;
private
Button ftnPause;
private
Button btnResume;
private
Label lbServiceName;
private
TextBox txtServerName;
private
Button btnServiceState;
private
string
serverName;
Ecents#region Ecents
private
void
frmMain_Load(
object
sender, EventArgs e)
{
if
(serverName ==
null
) { serverName = txtServerName.Text.Trim(); }
lbInfo.Text =
"当前服务状态是:"
+ getStateForService(serverName);
}
private
void
btnServiceState_Click(
object
sender, EventArgs e)
{
lbInfo.Text =
"当前服务状态是:"
+ getStateForService(serverName);
}
private
void
btnStart_Click(
object
sender, System.EventArgs e)
{
runService(serverName);
}
private
void
btnStop_Click(
object
sender, System.EventArgs e)
{
killService(serverName);
}
private
void
ftnPause_Click(
object
sender, EventArgs e)
{
pauseService(serverName);
}
private
void
btnResume_Click(
object
sender, EventArgs e)
{
resumeService(serverName);
}
private
void
btnExit_Click(
object
sender, System.EventArgs e)
{
this
.Close();
Application.Exit();
}
#endregion
第三步:添加用到的方法,代码如下:
Methods#region Methods
private
void
runService(
string
servername)
{
ServiceController sc =
new
ServiceController(servername);
ServiceControllerStatus st = sc.Status;
switch
(st)
{
case
ServiceControllerStatus.StopPending:
case
ServiceControllerStatus.Stopped:
sc.Start();
break
;
default
:
break
;
}
sc.WaitForStatus(ServiceControllerStatus.Running);
st = sc.Status;
//再次获取服务状态
if
(st == ServiceControllerStatus.Running)
{
lbInfo.Text =
"服务 "
+ sc.ServiceName +
" 已经启动!"
;
}
}
private
void
killService(
string
servername)
{
ServiceController sc =
new
ServiceController(servername);
ServiceControllerStatus st = sc.Status;
switch
(st)
{
case
ServiceControllerStatus.Running:
case
ServiceControllerStatus.StartPending:
case
ServiceControllerStatus.Paused:
case
ServiceControllerStatus.PausePending:
case
ServiceControllerStatus.ContinuePending:
sc.Stop();
sc.WaitForStatus(ServiceControllerStatus.Stopped);
break
;
}
st = sc.Status;
//再次获取服务状态
if
(st == ServiceControllerStatus.Stopped)
{
lbInfo.Text =
"服务 "
+ sc.ServiceName +
" 已经停止!"
;
}
}
private
void
pauseService(
string
servername)
{
ServiceController sc =
new
ServiceController(servername);
ServiceControllerStatus st = sc.Status;
switch
(st)
{
case
ServiceControllerStatus.Running:
case
ServiceControllerStatus.StartPending:
sc.Pause();
sc.WaitForStatus(ServiceControllerStatus.Paused);
break
;
}
st = sc.Status;
//再次获取服务状态
if
(st == ServiceControllerStatus.Paused)
{
lbInfo.Text =
"服务 "
+ sc.ServiceName +
" 已经暂停!"
;
}
}
private
void
resumeService(
string
servername)
{
ServiceController sc =
new
ServiceController(servername);
ServiceControllerStatus st = sc.Status;
switch
(st)
{
case
ServiceControllerStatus.Paused:
case
ServiceControllerStatus.PausePending:
sc.Continue();
sc.WaitForStatus(ServiceControllerStatus.Running);
break
;
}
st = sc.Status;
//再次获取服务状态
if
(st == ServiceControllerStatus.Running)
{
lbInfo.Text =
"服务 "
+ sc.ServiceName +
" 已经继续!"
;
}
}
private
string
getStateForService(
string
servername)
{
ServiceController sc =
new
ServiceController(servername);
ServiceControllerStatus st = sc.Status;
return
sc.Status.ToString();
}
#endregion
OK! 最后欣赏下我们的成果:
图片看不清楚?请点击这里查看原图(大图)。
邀月总结:其实WCF完全可以做到这些。这里只是作了一个简单演示。稍后可能会写WCF系列学习心得。呵呵
C#之Windows Service相关
vb如何制作service?
C#中web service保存格式问题
DDE Service Windows是什么?
windows service park
更新Windows Service Pack
c#语言网站制作
c#制作wap网站
C# windows编程
windows XP service Pack2 是什么?
Windows XP Service Pack 2
Windows XP Service Pack 1
Windows XP Service Pack 2
windows xp service pack 2
Windows XP Service Pack 2
windows xp professional service pack2
Windows Xp Service Pack 2
Windows 2000 Service Pack 4
如何c#制作聊天软件
Windows XP Service Pack 1中的Service Pack 是什么意思?
怎么把windows xp service pack1换成service pack2
C# Windows程序窗体大小
Reporting Service报表制作高手请进
Windows XP Service Pack 1 英文版