아래 코드를 사용하여 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 인스턴스를 실행할 수 있습니까? –
어떻게 작동하지 않습니까? 정확히 무엇이 실패하고 있습니까? –
첫 번째 인스턴스가 시작되어 실행중인 경우 5 분 2 초 인스턴스가 시작되고 첫 번째 인스턴스가 cimpleted가 아닌 경우에도 서비스를 실행하는 데 시간 간격을 둡니다. 5 분입니다. – user2061199