WPF 중복 실행 방지 코드
반응형

얼마만의 기술포스팅인가..


항상 적어야지만 생각하다가...


안적고.... 이제 드디어 적어본다.


정말 간단한 코드지만...


적어놔야 나중에 또 안 까먹지..


단순히 c# 응용 프로그램이 중복으로 실행되지 않도록 하는 코드다.


방법은 3가지가 있으니.. 각자 편한걸로 사용하면 된다..


근데 각각 사용되는 로직은 거의 비슷하다...


현재 수행중인 프로세스에서 수행하고자 하는 프로세스가 수행되고 있는지 확인 후 실행하는 로직


그럼 코드 고고


첫번째 방법


Mutex를 이용하는 방법이다.


운영체제 시간에 많이 들어봤을 단어일 것이다..


이걸로 손쉽게 중복실행을 체크할수 있다.


1
2
3
4
5
6
7
8
9
10
bool createdNew ;
// MyMutex라는 문자열을 유니크하게 구성하면 더 좋습니다. 
Mutex gM1 = new Mutex(true,"MyMutex"out createdNew);
    if (createdNew)
    {
        Application.Run(new Form1());
        gM1.ReleaseMutex();
    }
    else
        MessageBox.Show("이미 실행되어 있습니다.");
cs



두번째 방법

프로세스를 가져와서 프로세스의 이름을 가져오기!


1
2
3
4
5
6
7
8
9
10
11
12
try
{   
    Process[] myProcesses = Process.GetProcessesByName("ProcessName");    if (myProcesses.Length > 1)
    {
        MessageBox.Show("[ProcessName]가 이미 실행 중입니다.""TimeOff", MessageBoxButtons.OK);
        Application.Exit();
    }
}
catch()
{
    
}
cs


세번째 방법


이것도 프로세스로 가져오기



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;
}
 
cs

이거 포스팅으로 오늘 포스팅은 끝....

진짜 또 포스팅 자주자주해야하는데!!!


반응형