반응형
얼마만의 기술포스팅인가..
항상 적어야지만 생각하다가...
안적고.... 이제 드디어 적어본다.
정말 간단한 코드지만...
적어놔야 나중에 또 안 까먹지..
단순히 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 |
이거 포스팅으로 오늘 포스팅은 끝....
진짜 또 포스팅 자주자주해야하는데!!!
반응형