如何使用VB.NET重新启动服务?
好的,我是VB.NET新手,正在尝试编写一个程序,提示用户输入服务器名称,然后在该计算机上重新启动IIS 问题1)未识别命名空间如何使用VB.NET重新启动服务?,vb.net,Vb.net,好的,我是VB.NET新手,正在尝试编写一个程序,提示用户输入服务器名称,然后在该计算机上重新启动IIS 问题1)未识别命名空间System.ServiceProcess。 问题2)需要代码方面的帮助,将servername传递到sub Imports System Imports System.ServiceProcess Imports System.IO Imports System.Threading Class RestartIIS Shared Sub Main()
System.ServiceProcess
。问题2)需要代码方面的帮助,将servername传递到sub
Imports System
Imports System.ServiceProcess
Imports System.IO
Imports System.Threading
Class RestartIIS
Shared Sub Main()
Run()
End Sub
Public Sub Run()
Console.WriteLine("Please enter the Server Name: ")
Dim ServerName As String = Console.ReadLine()
Dim sc As ServiceController = New ServiceController("W3SVC")
sc.Stop()
Thread.Sleep(2000)
sc.Start()
Console.Write("Press Enter to Exit")
Console.ReadLine()
End Sub
End Class
您应该通过右键单击项目并单击添加引用来添加对
System.ServiceProcess
程序集的引用。。。并将命令行参数传递给Main
方法,如下所示:
Imports System
Imports System.ServiceProcess
Imports System.IO
Imports System.Threading
Class RestartIIS
Shared Sub Main(ByVal commandLineArgs() as String)
Run(commandLineArgs(0))
End Sub
Public Sub Run(ByVal machineName as String)
Console.WriteLine("Please enter the Server Name: ")
Dim ServerName As String = Console.ReadLine()
Dim sc As ServiceController = New ServiceController("W3SVC", machineName)
sc.Stop()
Thread.Sleep(2000)
sc.Start()
Console.Write("Press Enter to Exit")
Console.ReadLine()
End Sub
End Class
这个问题似乎是一个练习,所以不发布完全工作的代码会更有帮助,IMHO.Mehrdad,当我尝试运行这个时,vs告诉我不能在共享方法中调用run。“如果没有类的显式实例,则无法从共享方法或共享成员初始值设定项中引用类的实例成员”@Tomalak:这更像是一个脚本管理类型的问题,而不是家庭作业。我不认为homeworks处理服务和这类东西。@judy:你应该让Run方法共享或使用对象实例来调用它。你可以使用
sc.WaitForStatus(ServiceControllerStatus.Stopped)
来代替sc.WaitForStatus(ServiceControllerStatus.Stopped)
解释一下为什么这段代码回答这个问题会有帮助,不仅是问问题的人,而且是后来发现这个问题的人
ServiceControl.Stop()
Do
ServiceControl.Refresh()
If ServiceControl.Status = ServiceControllerStatus.Stopped Then
ServiceControl.Start()
Exit Do
End If
Loop