CHashtag

[C#] Mutex 생성, 해제하기 (중복실행방지) (Lock) 본문

C#

[C#] Mutex 생성, 해제하기 (중복실행방지) (Lock)

HyoSeong 2021. 6. 30. 16:03
반응형
// App.xaml.cs
// 프로그램 시작, 종료 지점에 해당 코드를 삽입하여도 무방합니다.

const string MUTEX_NAME = "SOME_UNIQUE_MUTEX_NAME";
Mutex mutex = null;

App()
{
    bool isNew;
    try
    {
        mutex = new Mutex(false, MUTEX_NAME, out isNew);
        if (!isNew)
        {
            Application.Current.Shutdown();
            mutex = null;
            return;
        }
    }
    catch (Exception ex)
    {
        Application.Current.Shutdown();
    }
}

/// <summary>
/// 프로그램이 종료되기 전에 Mutex를 해제해주어야 한다.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Application_Exit(object sender, ExitEventArgs e)
{
    if (mutex != null)
    {
        mutex.ReleaseMutex();
    }
}

 

 

<-- App.xaml -->
<Application x:Class="MutexTest.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:MutexTest" Exit="Application_Exit"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         
    </Application.Resources>
</Application>

 

감사합니다.

반응형