.net Compact Framework 3.5에서 실행되는 휴대용 장치에서 여러 인스턴스 문제를 막으려 고 여러 가지 방법을 시도해 보았습니다..NET Compact Framework에서 다중 인스턴스를 완전히 방지 할 수 있습니까?
현재 "뮤텍스"를 생성하고 같은 프로세스가 실행 중인지 확인하여 솔루션을 얻었습니다. 나는 프로그램 시작시 처음 실행될 "Program.cs"에이 문장을 넣었습니다.
하지만 내 문제는 사용자가 프로그램 아이콘을 실행 중지하는 동안 사용 중지해야한다는 요청을 받았기 때문에 발생하지 않는 것 같습니다.
나는 짧은 시일 내에 프로그램을 여러 번 열어 볼 수 있다는 사용자의 입장을 이해합니다. 그래서, 여전히 "열 수"있다면. 즉, 프로그램 자체를 초기화해야하고 결국 실패 할 수도 있습니다. 다중 인스턴스를 절대적으로 방지 할 수 있습니까? 또는 Windows CE에서 레지스트리를 편집하는 것과 같은 프로그래밍없이 다른 방법이 있습니까?
bool firstInstance;
NamedMutex mutex = new NamedMutex(false, "MyApp.exe", out firstInstance);
if (!firstInstance)
{
//DialogResult dialogResult = MessageBox.Show("Process is already running...");
Application.Exit();
}
NamedMutex이 OpenNetCF에서 클래스 :
여기 내 소스 코드입니다.
티 행크스 대단한 Davide :) 자, 당신이 말했듯이 현재 실행중인 인스턴스를 가져 오는 코드를 찾고 있습니다. 하지만, 나는 몇 가지 질문을했습니다. 사용자가 프로그램을 열기 위해 클릭 한 이후로 여전히 "Application.Exit()"원인이 필요하다고 생각합니다. 즉 새로운 인스턴스가 만들어 졌다는 뜻입니다. 따라서 메모리를 절약하려면 자체 종료해야합니다. 이게 옳은 거니 ? –
위의 내용을 확인하십시오. 반환이 있습니다. 당신은 리턴 또는 Application.Exit과 함께 작동하는 방법을 테스트 할 수 있습니다. 어쨌든 Application.Run을 호출하지 않으면 새 인스턴스가 종료되어야합니다. 다른 인스턴스가 이미 실행 중일 때 ... :) –
Davide, Thx a 많이 도와 줘. 내가 당신의 코드에서 본 것. 전경에 맞게 특정 창을 지정할 필요가 있습니까? –