본문 바로가기
컴퓨터/C#

C# 프로그램 중복실행 방지

by Begi 2019. 6. 26.
반응형

동일한 프로그램을 실행할 때 2개 이상이 실행되지 않고 항상 한번만 실행하기 위해서는 다음과 같은 2가지 방법이 있다.

 

1. Mutex를 이용한 방법

Program.cs에서 다음과 같이 수정한다. Mutex를 이용하여 프로그램 실행 여부를 판단하다. appGuid는 Mutex에서 사용되며 다른 프로그램과 중복되지 않도록 아무 문자를 집어넣으면 된다.

 static class Program
 {
        /// <summary>
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// </summary>
        [STAThread]
        static void Main()
        {
using (Mutex mutex = new Mutex(false, "Global\\" + appGuid))
{
if (!mutex.WaitOne(0, false))
{
MessageBox.Show("Instance already running");
return;
}


Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
        }


        private static string appGuid = "sejbdfkherjhfdjkhba;h;ehjn;dgjhnhnhnaejk;h";
 }

 

2. Process를 이용한 방법

실행 중인 프로세서 이름을 확인하여 같은 이름의 프로세서가 실행 중이면 실행을 중단한다.

 static class Program
 {
        /// <summary>
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// </summary>
        [STAThread]
     static void Main()
     {
       string s           = Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location);       Process[] procs = Process.GetProcessesByName(s);
       if (procs.Length > 1)
       {
          MessageBox.Show("Instance already running");
          return;
       }
       else
       {
          Application.EnableVisualStyles();
          Application.SetCompatibleTextRenderingDefault(false);
          Application.Run(new Form1());
       }
     }
 }

 

반응형

'컴퓨터 > C#' 카테고리의 다른 글

C# using 사용하는 이유  (0) 2019.07.04
C# 다른 프로그램 제어  (0) 2019.06.26
C# 프로그래밍  (0) 2019.06.15
C# listView 사용법  (0) 2019.06.12
C# listBox 사용법  (0) 2019.06.07

댓글