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