안녕하세요. 회원여러분.
오늘은 C#의 프로그램 중복실행 방지 코드에 대해 알아보겠습니다.
중복실행의 대표적인 예가 윈도우에서 제공하는 메모장이나 계산기와 같은
프로그램입니다.
이들 프로그램과는 다르게 중복실행이 되면 안되는 게임이나, 데이터 등록 목적의 프로그램은
다음과 같은 코드를 사용하면 될 것입니다.
/// <summary>
/// 프로그램의 실행여부를 확인하는 함수.
/// </summary>
/// <returns></returns>
public static bool IsRunningAppCheck()
{
System.Diagnostics.Process Process = System.Diagnostics.Process.GetCurrentProcess();
string ProcName = Process.ProcessName;
if (System.Diagnostics.Process.GetProcessesByName(ProcName).Length > 1)
{
return true;
}
else
{
return false;
}
}
위 코드가 이번 포스팅이 핵심 함수입니다.
System.Diagnostics.Process
로컬 및 원격 프로세스에 대한 액세스를 제공하고 로컬 시스템 프로세스를 시작하고 중지할 수 있습니다.
MSDN : https://docs.microsoft.com/ko-kr/dotnet/api/system.diagnostics.process?view=net-5.0
쉽게 말해서 프로그램의 시작, 종료를 할 수 있으며,
현재 실행된 프로그램이나 실행 중인 프로그램의 정보를 구할 수 있습니다.
이 클래스를 사용하여 실행하려는 프로그램이 실행중인 프로그램들 중 하나라면
실행이 되지 않도록 하는 것이 위 함수의 역할입니다.
C#의 프로그램 실행시 가장 먼저 실행되는 함수는 Program.cs의 static void Main() 함수입니다.
이 함수에 중복실행방지 함수를 추가하는 것입니다.
/// <summary>
/// 해당 애플리케이션의 주 진입점입니다.
/// </summary>
[STAThread]
static void Main()
{
try
{
if (IsRunningAppCheck() == false)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
else
{
MessageBox.Show("이미 프로그램이 실행 중 입니다.");
}
}
catch (Exception ex)
{
}
}
위와 같이 Main()함수를 수정/빌드 후 .exe파일을 중복 실행시 다음과 같은 메시지창이 실행되며,
중복실행이 되지 않는 것을 확인할 수 있습니다.
위 소스를 사용한 샘플소스를 참고하시기 바랍니다.
이상 사이버지식정보방이었습니다.
'C#' 카테고리의 다른 글
[StringBuilder] C# StringBuilder 사용하기. (0) | 2021.07.27 |
---|---|
[ini] C# ini 파일 조회/저장/수정. (ini파일에 대하여) (0) | 2021.07.26 |
[C#] 현재 PC에 설치되어 있는 글꼴 정보 가져오기. (0) | 2021.07.13 |
[C#] DataTable 두개를 Merge 하기. (합치기) (0) | 2021.07.12 |
[C#] PC 정보를 알아보자. (0) | 2021.07.11 |