-
동일한 프로그램이 동시에 2개가 켜지지 않도록하는 c# 코드프로그램(C# etc.) 2023. 1. 16. 13:03
C#에서 뮤텍스("상호 제외"의 줄임말)를 사용하여 두 개의 동일한 프로그램이 동시에 실행되는 것을 방지할 수 있습니다. 뮤텍스는 공유 리소스에 대한 액세스를 제어하는 데 사용할 수 있는 동기화 개체입니다. 프로그램이 뮤텍스를 획득하려고 할 때, 뮤텍스가 이미 다른 프로그램에 의해 유지되고 있다면, 그것은 차단(즉, 대기)할 것이다.
다음은 뮤텍스를 사용하여 프로그램의 여러 인스턴스가 동시에 실행되지 않도록 방지하는 방법의 예입니다:using System; using System.Threading; class Program { static void Main(string[] args) { // Create a mutex with a unique name. using (var mutex = new Mutex(false, "MyUniqueProgramName")) { // Attempt to acquire the mutex. if (!mutex.WaitOne(0, false)) { Console.WriteLine("Another instance of the program is already running."); return; } // The mutex has been acquired, so the program can continue running. // ... } } }
이 예제에서 프로그램은 고유한 이름인 "MyUniqueProgramName"을 가진 뮤텍스를 만듭니다. 프로그램이 시작되면 WaitOne 메서드를 호출하여 뮤텍스를 획득하려고 시도합니다. 뮤텍스가 이미 다른 프로그램에 의해 유지되고 있는 경우, WaitOne 메서드는 프로그램의 다른 인스턴스가 이미 실행 중임을 나타내는 false를 반환합니다. 이 경우 프로그램에 메시지가 표시되고 종료됩니다. 뮤텍스가 다른 프로그램에 의해 유지되지 않으면 WaitOne 메서드가 true를 반환하여 프로그램이 뮤텍스를 획득했으며 계속 실행할 수 있음을 나타냅니다.
뮤트크세스는 시스템 전체의 개체이며 서로 다른 프로세스에서 리소스에 대한 액세스를 동기화하는 데 사용할 수 있습니다.내가 사용한 코드
// 사용 부분 if (IsExistProcessMutex(Process.GetCurrentProcess().ProcessName)) { MessageBox.Show("이미 실행중 입니다..."); } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } // 함수 부분 static bool IsExistProcessMutex(string processName) { bool createdNew; Mutex mutex = new Mutex(true, processName, out createdNew); if (createdNew == true) return false; else return true; }
'프로그램(C# etc.)' 카테고리의 다른 글
프로그램 시작되면서 트레이 아이콘으로 시작하는 코드 (0) 2023.01.16 NotifyIcon 등록방법 설명해줘 (0) 2023.01.16 Dictionary<string, DateTime> myMap = new Dictionary<string, DateTime>(); for문 돌려줘, Dictionary(Map) for문 돌려줘 코드 (0) 2023.01.13 C++ map 사용 코드 보여줘 (0) 2023.01.12 richTextBox1 출력하고 제일 하단으로 내리는 코드 (0) 2023.01.12