DBILITY

C# 중복실행방지 ( Mutex 사용 ) 본문

C#

C# 중복실행방지 ( Mutex 사용 )

DBILITY 2017. 12. 26. 19:55
반응형

중복실행을 방지할때 쓴다.델파이가 그립다.

Mutex Class에 관해서 여기를 참고.

Environment.SetEnvironmentVariable는 아래에선 현재 프로세스에 환경변수를 설정한 것이다.

처음부터 Environment.GetEnvironmentVariable("PATH") 를 연결해주면 시스템에 설정된 패스도 함께 나타난다.

오라클용 dll을 사용한다거나 할때 패스설정 후 NLS_LANG,TNS_ADMIN,NSL_DATE_FORMT등도 설정할 수 있다.

물론 다른 dll도 마찬가지다.

델파이에서 EXE에 args를 어떻게 넘겼었더라...기억이 안난다...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace AppLoginTest
{
    static class Program
    {
        ///
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// 
        [STAThread]
        static void Main()
        {
            Environment.SetEnvironmentVariable("PATH", Environment.CurrentDirectory + "\\", EnvironmentVariableTarget.Process);
            Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ";" +Environment.CurrentDirectory + "\\dll\\", EnvironmentVariableTarget.Process);

            bool isCreatedNew;
            System.Threading.Mutex mutex = new System.Threading.Mutex(true, Application.ProductName, out isCreatedNew);

            if (isCreatedNew)
            {

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                frm_Login login = new frm_Login();

                if (DialogResult.OK == login.ShowDialog())
                {
                    
                    Application.Run(new frm_Main());
                    mutex.ReleaseMutex();
                }
                else
                {
                    Application.Exit();
                }
                
            }
            else
            {
                MessageBox.Show("이미 실행중입니다.");
                Application.Exit();
            }
        }
    }
}

 

반응형

'C#' 카테고리의 다른 글

C# CS0656 compiler error ( 컴파일러 오류 )  (0) 2018.01.11
visualstudio express 다운로드 주소  (0) 2017.12.27
C# log4net 사용하기  (0) 2017.12.27
C# WebRequest web page read  (0) 2017.12.26
C# AsyncBridge.Net35  (0) 2017.12.26
Comments