C# 콘솔 앱을 작성 중입니다. 예약 된 작업으로 실행됩니다.내 프로그램이 Windows에서 실행 중인지 확인하는 방법은 무엇입니까?
다른 프로세스가 이전 일정 작업 실행에서 계속 실행중인 경우 EXE를 빨리 종료하고 싶습니다.
내 응용 프로그램이 활성 프로세스를 감지하고 이미 실행 중인지 여부를 알 수있는 방법을 찾지 못하는 것 같습니다.
어떤 아이디어 주셔서 감사합니다. Peter
C# 콘솔 앱을 작성 중입니다. 예약 된 작업으로 실행됩니다.내 프로그램이 Windows에서 실행 중인지 확인하는 방법은 무엇입니까?
다른 프로세스가 이전 일정 작업 실행에서 계속 실행중인 경우 EXE를 빨리 종료하고 싶습니다.
내 응용 프로그램이 활성 프로세스를 감지하고 이미 실행 중인지 여부를 알 수있는 방법을 찾지 못하는 것 같습니다.
어떤 아이디어 주셔서 감사합니다. Peter
하나의 일반적인 기술은 프로세스가 시작될 때 뮤텍스를 만드는 것입니다. 뮤텍스를 만들 수 없다면 실행중인 다른 인스턴스가 있음을 의미합니다.
//Declare a static Mutex in the main form or class...
private static Mutex _AppMutex = new Mutex(false, "MYAPP");
// Check the mutex before starting up another possible instance
[STAThread]
static void Main(string[] args)
{
if (MyForm._AppMutex.WaitOne(0, false))
{
Application.Run(new MyForm());
}
else
{
MessageBox.Show("Application Already Running");
}
Application.Exit();
}
여기 링크가 있습니다. 아마도 tekBlues가 코드 샘플을 사용하여 답변을 업데이트 할 수 있습니다. http://www.programmersheaven.com/mb/csharp/209938/209938/how-can-i-check-if-my-application-is-already-running/?S=B20000 참고 : 테스트하지 않았습니다. 견본. –
뮤텍스는 프로세스를 검사 할 수있는 권한이 없기 때문에 프로세스를 검사하는 것보다 더 나은 옵션이지만, 뮤텍스가있는 것에 대해서는 걱정할 필요가 없습니다 –
이렇게하려면 100 % 귀하의 애플 리케이션이 잠글 수 없다면, 그렇지 않으면 자신이 DOS'ing 결국거야 –
프로세스를 확인하는 System.Diagnostics 네임에 뭔가가되지 않습니다
이 나단의 링크에서 샘플은?
편집 :이 링크들 중 어떤 것이 도움이 되나요? 어떻게 유용한 지 알 수 있습니다.
내가 할 수있는 모든 당신에게 다른 항목에 대한 링크를 제공하는 것을 미안 해요
이 System.Diagnostics.Process가
getProcesses()
사용 뮤텍스를 시도 :
// Allow only one instance of app
// See http://www.yoda.arachsys.com/csharp/faq/#one.application.instance
bool firstInstance;
_mutex = new Mutex(false, "Local\\[UniqueName]", out firstInstance);
고마워, 그게 아주 간단했다! (이 시점에서 내가 다룰 수있는 모든 것) –
http://www.sanity-free.org/143 /csharp_dotnet_single_instance_application.html –