C# 윈폼(Windows Form) 중복 실행 방지



이번 포스팅에서는 C# Windows Form을 이용하여 하나의 프로세스만 띄우는 방법에 대해서 알아보도록 하겠습니다.

 

프로그램을 개발하다 보면 중복 실행을 함으로 인해서 프로그램에 잘못하여 문제가 생기는 경우가 있는데, 미연에 이를 방지하기 위한 방법으로 이미 A 라는 프로세스가 실행 중이라면 A가 종료되기 전까지는 중복 실행이 되지 않는 방법에 대해 C# 윈폼 환경에서는 어떻게 구현하는지 지금부터 알아보도록 하겠습니다.

 

우선 Windows Form 프로젝트를 생성하여 주시기 바랍니다.




여기까지 따라하셨다면, 이제 Program.cs 안에 코드를 아래와 같이 작성하여 주시기 바랍니다.

 

[Program.cx]


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

using System;

using System.Collections.Generic;

using System.Diagnostics;

using System.Linq;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace test

{

    static class Program

    {

        /// <summary>

        /// 해당 응용 프로그램의  진입점입니다.

        /// </summary>

        [STAThread]

        static void Main()

        {

            try

            {

                int cnt = 0;

 

                Process[] procs = Process.GetProcesses();

 

                foreach (Process p in procs)

                {

                    if (p.ProcessName.Equals("test"== true)

                        cnt++;

                }

 

                if (cnt > 1)

                {

                    MessageBox.Show("이미 실행중입니다.");

                    return;

                }

                else

                {

                    Application.EnableVisualStyles();

                    Application.SetCompatibleTextRenderingDefault(false);

                    Application.Run(new Form1());

                }

            }

 

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message, "Program - Error");

            }

        

        }

 

    }

}

 

Colored by Color Scripter

cs

 

위의 코드를 간단히 설명을 드리자면, 먼저 프로세스가 실행될 때 프로세스의 숫자를 세기 위한 카운트 변수를 하나 선언해 주고,


MS에서 제공해주는 Process 클래스 객체를 선언하여 현재 실행 되고 있는 프로세스 이름을 비교해 같은 프로세스가 실행 중이라면 cnt++ 을 해주고, if(cnt > 1)  이라는 예외처리를 통해 만약 cnt 2 이상이 되면 현재 하나의 프로세스가 켜져 있는 상태에서 또 같은 프로세스를 실행 시키려는 목적으로 간주 하에 MessageBox를 띄어 사용자에게 이미 같은 프로세스가 실행 중이라고 알려주는 코드입니다.

 

 

[실행 결과]



위와 같이 첫 번째 실행을 시켰을 때에는 폼이 정상적으로 실행이 되지만, 두번 째 실행을 시켜보면 현재 test라는 프로세스가 실행중이므로 "이미 실행중입니다." 라는 문구를 사용자에게 보여주면서 폼이 생성되지 않는 것을 확인 하실 수 있습니다.

 

참고 프로세스 이름 변경 방법

해당 프로젝트 우클릭 속성 이름 변경



 

이로써 C# Windows Form을 이용하여 중복 실행 방지하는 방법에 대하여 간략히 알아보았습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY