반응형
|
방법 1~ 3
1. Mutex :
bool createdNew ;
// MyMutex라는 문자열을 유니크하게 구성하면 더 좋습니다.
Mutex gM1 = new Mutex(true,"MyMutex", out createdNew);
if (createdNew)
{
Application.Run(new Form1());
gM1.ReleaseMutex();
}
else
MessageBox.Show("이미 실행되어 있습니다.");
2. Process.GetProcessesByName :
private void DoublePlayCHK()
{
try
{
throw new System.NotImplementedException();
}
catch(NotImplementedException)
{
Process[] myProcesses = Process.GetProcessesByName("TimeOff");
if (myProcesses.Length > 1)
{
MessageBox.Show("[TimeOff]가 이미 실행 중입니다.", "TimeOff", MessageBoxButtons.OK);
Application.Exit();
}
}
}
3. Process.GetProcesses :
processcount = 0;
Process[] procs;
procs = Process.GetProcesses();
foreach(Process aProc in procs)
{
if(aProc.ProcessName.ToString().Equals("KotraServer"))
{
processcount++;
}
}
if(processcount == 1)
Application.Run(new ServerMain());
else
{
MessageBox.Show("이미 실행되어 있습니다.");
return;
}
[출처] C# 중복실행 체크|작성자 지니
|