728x90
반응형
WPF & C# - 중복실행방지 2가지 방법 ( 이중실행 / Titile명 기준 / 뮤택스 / 뮤텍스 / Mutex ) |
MainWindow.xaml.cs - 타이틀명 기준
123456789101112 // 이중실행 방지를 위한 DLL import[DllImportAttribute("user32.dll", EntryPoint = "FindWindow")]public static extern int FindWindow(string clsName, string wndName);public MainWindow(){InitializeComponent();// 이중실행 방지를 위한 코드 ( TITLE 명을 기준으로 한다.)this.Title = "Title명";if (FindWindow(null, Title) > 1) Application.Current.Shutdown();}cs
[윈도우 ]
- 기존 실행되던 Window 창의 제목 타이틀 (Title)을 찾아서 숫자파악 후 시작시 0이 아닐 시 종료 됨
MainWindow.xaml.cs - Mutex 이용
123456789101112131415161718192021222324252627282930 public MainWindow(){this.Title = "Title명";Duplicate_execution(Title); // 중복실행 방지initSetting(); // 초기설정}// 중복실행방지 - Mutex 활용Mutex mutex = null;private void Duplicate_execution(string mutexName){try{mutex = new Mutex(false, mutexName);}catch (Exception ex){// MessageBox.Show(ex.Message + "\n\n" + ex.StackTrace + "\n\n" + "Application Exiting…", "Exception thrown");Application.Current.Shutdown();}if (mutex.WaitOne(0, false)){InitializeComponent();}else{// MessageBox.Show("Application already startet.", "Error", MessageBoxButton.OK, MessageBoxImage.Information);Application.Current.Shutdown();}}cs
* 중복실행체크하여 Initialize 실행여부를 결정한다.
728x90
반응형