본문 바로가기
프로그래밍/C#

C# Mutex 동기화 코드

by 뽀도 2017. 6. 21.

 

 

프로그램 종료시 해당 경로에 있는 프로그램 실행하면서 계속 하나의 뮤텍스를 공유해서 사용하는 코드.


using System;
using System.Threading;
using System.Collections.Generic;
using static System.Net.Mime.MediaTypeNames;
namespace csharp_study
{
class Program
{
public static Mutex mtx = null;
static void Run()
{
Console.WriteLine("Start program");
bool bRun = true;
string cmd = "";
while (bRun)
{
//x 입력시 종료
cmd = Console.ReadLine();
if (cmd.Equals("x"))
{
mtx.ReleaseMutex();
bRun = false;
return;
}
else
{
Console.WriteLine(string.Format("{0} : input value", cmd));
}
}
}
static void Main(string[] args)
{
bool createNew = false;
mtx = new Mutex(true, "podoMutex", out createNew);
if (!createNew)
{
Console.WriteLine("Fail to get a mutex");
// mutex 기다림
mtx.WaitOne();
// 종료된 프로그램 다시 실행
System.Diagnostics.Process ps = new System.Diagnostics.Process();
ps.StartInfo.FileName = "csharp_study.exe";
ps.StartInfo.WorkingDirectory= @"E:\csharp_project\csharp_study\csharp_study\bin\Debug\";
ps.Start();
}
Run();
}
}
}
출처: http://podo1017.tistory.com/162 [Keep Moving]


반응형

'프로그래밍 > C#' 카테고리의 다른 글

전처리기.  (0) 2017.08.13
c# ThreadPool 사용  (0) 2017.06.26
C# Thread 2  (0) 2017.06.20
C# Thread 클래스  (0) 2017.06.20
C# 익명타입 : 클래스를 미리 정의하지 않고 사용하는 것.  (0) 2017.06.16

댓글