1차 제작

기능은 다 만들었는데 테스트를 못해봄
그래서 잘 작동하는지 모름
집가서 테스트해봐야지
This commit is contained in:
2026-04-14 14:45:41 +09:00
parent 8589e16688
commit 9d14827e83
9 changed files with 1088 additions and 0 deletions

36
App.xaml.cs Normal file
View File

@@ -0,0 +1,36 @@
using System.Threading;
using System.Windows;
namespace AudioBotProject
{
public partial class App : Application
{
// 💡 프로그램 전체에서 딱 하나만 존재해야 하는 '뮤텍스(열쇠)'입니다.
private static Mutex? _mutex = null;
// 프로그램이 본격적으로 켜지기(MainWindow를 띄우기) 직전에 실행되는 함수입니다.
protected override void OnStartup(StartupEventArgs e)
{
// 우리 프로그램만의 고유한 열쇠 이름 (절대 겹치지 않을 만한 이름으로 짓습니다)
const string mutexName = "AudioBotProject_Unique_Mutex_Key_12345";
bool isNewInstance;
// 컴퓨터 전체를 통틀어서 저 이름의 열쇠가 있는지 확인하고, 없으면 내가 가집니다.
_mutex = new Mutex(true, mutexName, out isNewInstance);
// 만약 내가 새로운 열쇠를 만든 게 아니라면? (이미 다른 애가 열쇠를 들고 켜져 있다면?)
if (!isNewInstance)
{
// 경고창을 띄우고
MessageBox.Show("프로그램이 이미 실행 중입니다!", "중복 실행 방지", MessageBoxButton.OK, MessageBoxImage.Warning);
// 메인 화면을 띄우기도 전에 프로그램을 즉시 강제 종료해버립니다.
Application.Current.Shutdown();
return;
}
// 내가 첫 번째 실행이라면, 정상적으로 원래 하던 일(MainWindow 띄우기)을 계속합니다.
base.OnStartup(e);
}
}
}