앙큼한 개발기록

[c#] 프로세스 (프로그램) 중복 실행 본문

개발

[c#] 프로세스 (프로그램) 중복 실행

angkeum 2023. 5. 25. 12:12

릴리즈모드로 프로그램을 디버깅 하면서 실제 프로그램과 포트가 충돌나는 경우가 생겼다. 

동일한 프로그램이 여러개 뜰수 있다는 생각을 못하다가 

이번에 동일 프로그램에 대한 프로세스를 띄우지 못하게 하는 방법에 대해 정리 해보고자 한다. 

 

using System.Diagnostics;

namespace WinFormsApp1
{
    internal static class Program
    {
        /// <summary>
        ///  The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            // To customize application configuration such as set high DPI settings or default font,
            // see https://aka.ms/applicationconfiguration.

            string name = Process.GetCurrentProcess().ProcessName;
            if (IsExistProcess(name))
            {
                MessageBox.Show("is already running");
            }
            else
            {
                ApplicationConfiguration.Initialize();
                Application.Run(new Form1());
            }
        }

        static bool IsExistProcess(string processName)
        {
            Process[] process = Process.GetProcesses();
            int count = 0;

            foreach (var p in process)
            {
                if (p.ProcessName == processName)
                    count++;
                if (count > 1)
                    return true;
            }
            return false;
        }

        static bool IsExistMutex(string processName)
        {
            bool result;

            Mutex mutex = new Mutex(true, processName, out result);
            return !result;
        }
    }
}

 

끝.

Comments