0
我用下面的代码,以限制Windows服务的第二个实例尝试过,但下面的代码是不是为我工作,任何人都可以帮助我。 我已经把时间间隔来运行服务,即5个薄荷糖,如果第一个实例启动并运行,5个第二个实例启动后即使第一个实例没有完成。Windows服务 - 只有一个实例,以允许一次
static class Program
{
[STAThread]
static void Main()
{
bool ok;
System.Threading.Mutex m = new System.Threading.Mutex(true, "ImageImportService", out ok);
if (!ok)
{
return;
}
GC.KeepAlive(m);
if (PriorProcess() != null)
{
return;
}
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new ImageImportService()
};
ServiceBase.Run(ServicesToRun);
}
public static Process PriorProcess()
{
Process curr = Process.GetCurrentProcess();
Process[] procs = Process.GetProcessesByName(curr.ProcessName);
foreach (Process p in procs)
{
if ((p.Id != curr.Id) && (p.MainModule.FileName == curr.MainModule.FileName))
return p;
}
return null;
}
}
相同服务的2个实例可能运行吗? – 2013-03-25 05:57:44
它不起作用?究竟什么是失败? – 2013-03-25 06:06:07
我已经放了时间间隔来运行服务,也就是5分钟,如果第一个实例启动并运行,那么5分钟的第二个实例即使第一个实例没有被启动也是如此。 – user2061199 2013-03-25 06:50:13