내 프로그램이 주어진 시간에 여러 인스턴스를 실행하지 못하도록하고 있습니다. 나는 뮤텍스와 윈도우 이벤트를 사용하는 것에 대해 읽었지만, 두 스레드는 수 년 전이었고, .net4와 함께 처리하는 것이 더 간단하고 우아한 방법이 있는지 궁금하다. 나는 당신이 재산에 의해 여러 인스턴스를 거부 할 수있는 양식에 대한 설정에 대해 읽은 것 같아요? 누군가가 프로그램의 여러 인스턴스를 방지하는 가장 안전하고 간단한 방법에 대해 설명해 줄 수 있습니까?프로그램의 여러 인스턴스를 방지하는 가장 안전한 방법은 무엇입니까?
4
A
답변
4
가장 안전한 방법은 .NET의 Windows FormsApplicationBase.IsSingleInstance 속성에서 기본 제공 지원을 사용하는 것입니다. 적절하다면 추측하기 어렵습니다. 정확한 요구 사항을 설명하는 데 많은 노력을 기울이지 않았습니다. 그리고 아니, 지난 5 년간 아무것도 바뀌지 않았습니다. - Hans Passant 1 월 7 일 0시 38 분
이 답변이 가장 좋았지 만 한스는 답변으로 제출하지 않았습니다.
3
VB에서는 Winforms 프로젝트의 프로젝트 수준 (속성> 일반)에서이를 설정할 수 있습니다. 당신은 .. 물론 변환을 필요로이 유사한 코드를 사용하여 C#에서
..Dim tGrantedMutexOwnership As Boolean = False
Dim tSingleInstanceMutex As Mutex = New Mutex(True, "MUTEX NAME HERE", tGrantedMutexOwnership)
If Not tGrantedMutexOwnership Then
'
' Application is already running, so shut down this instance
'
Else
'
' No other instances are running
'
End If
으악, 난 당신이
을() 호출하여 Application.Run 후GC.KeepAlive(tSingleInstanceMutex)
을 배치 할 필요가 있음을 언급하는 것을 잊었다
1
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Windows.Forms;
namespace YourNameSpaceGoesHere
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
if (Process.GetProcessesByName("YourFriendlyProcessNameGoesHere").Length > 1)
{
MessageBox.Show(Application.ProductName + " already running!");
Application.ExitThread();
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new YourStartUpObjectFormNameGoesHere());
}
}
}
}
+0
좋고 깨끗한 답변입니다! 투표를하다 – Sylca
관련 문제
- 1. 프로그램의 여러 인스턴스를 피하는 방법은 무엇입니까?
- 2. 병합 커밋을 방지하는 안전한 방법은 무엇입니까?
- 3. 오브젝트를 공유하는 가장 안전한 방법은 무엇입니까? PHP
- 4. 스크립트의 배수 인스턴스를 방지하는 방법은 무엇입니까?
- 5. 서비스에서 시작하는 여러 활동 인스턴스를 방지하는 방법
- 6. 매달려있는 방울을 제거하는 가장 안전한 방법은 무엇입니까
- 7. PHP에서 비밀번호를 저장하는 가장 안전한 방법은 무엇입니까?
- 8. 페이지를 자신에게 제출하는 가장 안전한 방법은 무엇입니까?
- 9. 가장 안전한 해싱 방법은 무엇입니까? (PHP)
- 10. 여러 설정 파일 인스턴스를 처리하는 가장 좋은 방법은 무엇입니까?
- 11. Apache Tomcat에서 여러 애플리케이션 인스턴스를 실행하는 가장 좋은 방법은 무엇입니까?
- 12. CUDA에서 PFactory의 여러 인스턴스를 실행하는 방법은 무엇입니까?
- 13. IDisposable의 스레드로부터 안전한 단일 인스턴스를 만드는 방법은 무엇입니까?
- 14. DocumentEvent주기를 방지하는 가장 좋은 방법은 무엇입니까?
- 15. MVC3에서 여러 게시물을 방지하는 방법은 무엇입니까?
- 16. 여러 개의 창을 방지하는 방법은 무엇입니까?
- 17. 테스트에서 응용 프로그램의 여러 인스턴스를 시작하는 방법
- 18. 두 클래스 인스턴스를 서로 바꾸는 가장 안전한 방법
- 19. 첨부 된 EBS 볼륨 및 MongoDB 서버로 EC2 인스턴스를 종료하는 가장 안전한 방법은 무엇입니까
- 20. 많은 .NET Task 인스턴스를 조정하는 가장 좋은 방법은 무엇입니까?
- 21. 가장 안전한 OpenID 구현
- 22. 활동의 인스턴스를 여러 개 만드는 방법은 무엇입니까?
- 23. 스핑크스의 여러 인스턴스를 실행하는 방법은 무엇입니까?
- 24. Android 서비스의 여러 인스턴스를 중지하는 방법은 무엇입니까?
- 25. 활동의 여러 인스턴스를 만드는 방법은 무엇입니까? - revisited
- 26. 여러 Clip 인스턴스를 재생하는 방법은 무엇입니까?
- 27. html에 짧은 배열을 저장하는 가장 효율적이고 안전한 방법은 무엇입니까?
- 28. 가장 안전한 PHP '액세스 거부'방법
- 29. 가장 안전한 파이썬 "암호"암호화
- 30. Windows에서 가장 안전한 단일 앱 가드가
가장 안전한 방법은 .NET의 Windows FormsApplicationBase.IsSingleInstance 속성에서 기본 제공 지원을 사용하는 것입니다. 적절하다면 추측하기 어렵습니다. 정확한 요구 사항을 설명하는 데 많은 노력을 기울이지 않았습니다. 그리고 아니, 지난 5 년간 아무것도 바뀌지 않았습니다. –
명명 된 이벤트를 만듭니다. [여기]를 수행하는 방법에 살펴 보자 [1] [1] : http://stackoverflow.com/questions/447546/creating-win32-events-from-c-sharp – Odys
한스 경우 당신은 그 해설을 실제 답변으로 만들 것입니다. 제가 선택한 답을 당신에게 줄 것입니다. –