1차 제작
기능은 다 만들었는데 테스트를 못해봄 그래서 잘 작동하는지 모름 집가서 테스트해봐야지
This commit is contained in:
36
App.xaml.cs
Normal file
36
App.xaml.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user