C# 如何在c.net中以编程方式重新启动Windows服务
有人能帮我吗?我如何在c.net中每隔15分钟以编程方式重新启动Windows服务?请帮助我。。 我用diz的方式编写代码 我一直喜欢dis way,直到课堂页面[RunInstallertrue]C# 如何在c.net中以编程方式重新启动Windows服务,c#,asp.net,vb.net,C#,Asp.net,Vb.net,有人能帮我吗?我如何在c.net中每隔15分钟以编程方式重新启动Windows服务?请帮助我。。 我用diz的方式编写代码 我一直喜欢dis way,直到课堂页面[RunInstallertrue] public class ProjectInstaller : System.Configuration.Install.Installer private System.ServiceProcess.ServiceProcessInstaller
public class ProjectInstaller : System.Configuration.Install.Installer
private System.ServiceProcess.ServiceProcessInstaller
serviceProcessInstaller1;
private System.ServiceProcess.ServiceInstaller serviceInstaller1;
public ProjectInstaller()
InitializeComponent();
}
private void InitializeComponent()
{
this.serviceProcessInstaller1 =
new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 =
new System.ServiceProcess.ServiceInstaller();
this.serviceProcessInstaller1.Account =
System.ServiceProcess.ServiceAccount.LocalSystem;
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.Username = null;
this.serviceInstaller1.ServiceName = "MyNewService";
this.serviceInstaller1.StartType =
System.ServiceProcess.ServiceStartMode.Automatic;
this.Installers.AddRange
(new System.Configuration.Install.Installer[]
{
this.serviceInstaller1,
this.serviceInstaller1});
}
}
有几种方法可以做到这一点: 将服务更改为在AppDomain中承载当前进程的轻型存根。使用计时器服务卸载并重新启动AppDomain 创建两个服务。将“一个服务”设置为计时器,并使用访问您的服务的以编程方式重新启动此服务,以停止并重新启动它
有几种方法可以做到这一点: 将服务更改为在AppDomain中承载当前进程的轻型存根。使用计时器服务卸载并重新启动AppDomain 创建两个服务。将“一个服务”设置为计时器,并使用访问您的服务的以编程方式重新启动此服务,以停止并重新启动它
您不应该重新启动完整的服务。 相反,您可以在服务中创建一个定时,定时触发 像这样
private void StartTimer()
{
System.Threading.Timer timer =
new System.Threading.Timer(
TimerCompleted,
null,
TimeSpan.FromMinutes(15),
TimeSpan.FromMinutes(15));
}
private void TimerCompleted(object state)
{
// Call your action here
ProcessFiles();
}
从服务开始时调用StartTimer,并将所有工作放入ProcessFiles中
但是,如果您实际上只是想监视目录中的更改,那么您可以改为使用。它可以在文件系统发生更改时立即通知您。您不应该重新启动完整的服务。 相反,您可以在服务中创建一个定时,定时触发 像这样
private void StartTimer()
{
System.Threading.Timer timer =
new System.Threading.Timer(
TimerCompleted,
null,
TimeSpan.FromMinutes(15),
TimeSpan.FromMinutes(15));
}
private void TimerCompleted(object state)
{
// Call your action here
ProcessFiles();
}
从服务开始时调用StartTimer,并将所有工作放入ProcessFiles中
但是,如果您实际上只是想监视目录中的更改,那么您可以改为使用。它可以在文件系统发生更改时立即通知您。您可以使用此代码重新启动服务:
using System.Diagnostics;
public static void RestartService(string serviceName)
{
var psi = new ProcessStartInfo("net.exe", "stop " + serviceName);
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.UseShellExecute = true;
psi.WorkingDirectory = Environment.SystemDirectory;
var st = Process.Start(psi);
st.WaitForExit();
psi = new ProcessStartInfo("net.exe", "start " + serviceName);
psi.UseShellExecute = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.WorkingDirectory = Environment.SystemDirectory;
st = Process.Start(psi);
st.WaitForExit();
}
我得到了这个代码,测试了它,它成功了。使用间隔为15分钟的计时器,每15分钟调用一次。您可以使用此代码重新启动服务:
using System.Diagnostics;
public static void RestartService(string serviceName)
{
var psi = new ProcessStartInfo("net.exe", "stop " + serviceName);
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.UseShellExecute = true;
psi.WorkingDirectory = Environment.SystemDirectory;
var st = Process.Start(psi);
st.WaitForExit();
psi = new ProcessStartInfo("net.exe", "start " + serviceName);
psi.UseShellExecute = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.WorkingDirectory = Environment.SystemDirectory;
st = Process.Start(psi);
st.WaitForExit();
}
我得到了这个代码,测试了它,它成功了。使用间隔为15分钟的计时器,每15分钟调用一次
使用以下命令创建批处理文件:
网络停止服务名
网络启动服务名
使用windows计划程序并创建每15分钟运行此脚本的计划
使用以下命令创建批处理文件:
网络停止服务名
网络启动服务名
使用windows计划程序并创建每15分钟运行此脚本的计划
为什么需要每15分钟重新启动一次?如果希望代码每15分钟运行一次,请使用计时器并将计时器勾号事件设置为应该运行的代码。每15分钟重新启动服务听起来像是在试图解决其他问题。确切地说,为什么要重新启动服务?服务被设计为长时间连续运行,如果这不是您想要的,那么服务可能是作业的错误工具。顺便问一下,您的windows服务与您标记问题的asp.net标记有什么关系?如果与问题无关,您应该删除该标签。@albin…thnks fr回答是的,您的权利!!在一个特定的根文件夹中,一些文件将在tht中出现并落下,我的服务将启动作业。一段时间后,作业将再次完成。一些文件将在我手动重新启动的特定时间到达该根文件夹,因此我问你为什么需要每15分钟重新启动一次?如果希望代码每15分钟运行一次,请使用计时器并将计时器勾号事件设置为应该运行的代码。每15分钟重新启动服务听起来像是在试图解决其他问题。确切地说,为什么要重新启动服务?服务被设计为长时间连续运行,如果这不是您想要的,那么服务可能是作业的错误工具。顺便问一下,您的windows服务与您标记问题的asp.net标记有什么关系?如果与问题无关,您应该删除该标签。@albin…thnks fr回答是的,您的权利!!在一个特定的根文件夹中,一些文件会在tht中出现并落下,我的服务将启动作业。一段时间后,作业将再次完成。一些文件将在我手动重新启动的特定时间到达该根文件夹,以便我问突然的否决票是怎么回事?所以,在投票时写评论指出可能的改进是很有礼貌的。投票突然被否决是怎么回事?因此,在投票时写评论指出可能的改进是一种很好的方式。