C#/WPF/Prism 응용 프로그램에서 의심스러운 문제가 발생했습니다. 뮤텍스의 도움으로 두 번째 이상의 실행을 차단하는 방법을 만들었습니다. 이것은 Windows 7에서 정상적으로 작동합니다. Windows 10에서이 응용 프로그램을 실행하려고하면 응용 프로그램이 처음 예상대로 시작되고 두 번째 시작은 때때로 내 오류 메시지 만 표시하지만 대부분 내 오류 메시지가 표시되고 이에 대한 확인을 클릭하면, 윈도우 대화 상자가 나타나 "프로그램이 작동을 멈췄습니다"라는 메시지가 나타납니다. 나는이 절차는 Windows 10에서 잘 작동 this.shutdown 후 Messagebox.Show 문을 추가하지만,이 올바른 해결책이 될하지 않을 수 있습니다 경우 윈도우 10 시스템의 이벤트 로그에서 새로운 응용 프로그램 로그 항목windows에서 this.shutdown 이후에 응용 프로그램 충돌이 발생했습니다.
Faulting application name: application.name, version: 0.1.11.0, time stamp: 0x5a01baef
Faulting module name: KERNELBASE.dll, version: 10.0.16299.15, time stamp: 0x2cd1ce3d
Exception code: 0xc000041d
Fault offset: 0x001008b2
Faulting process ID: 0x19bc
Faulting application start time: 0x01d357cfe3c8bc58
Faulting application path:
Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll
Report ID: 525f81c7-cccb-49f3-9c25-01c877056b83
Faulting package full name:
Faulting package-relative application ID:
입니다.
이 문제는 Visual Studio에서이 프로그램을 실행하는 EXE에서 doubleclick을 통해 응용 프로그램을 실행할 때만 발생하며이 동작을 재현하지 않습니다. 또한이 오류가 발생하지 않는 전역 예외 처리를 첨부했습니다.
솔루션 찾기에 도움을 주셔서 감사합니다.
EDIT -; Environment.Exit (0) 실시 예 최소
protected override void OnStartup(StartupEventArgs e)
{
// Global exception handling
Application.Current.DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler(AppDispatcherUnhandledException);
try
{
// getting the settings
ISettingsRepo _settingsRepo = new SettingsRepo();
if (mutex.WaitOne(TimeSpan.Zero, true))
{
Bootstrapper bs = new Bootstrapper();
bs.Run();
mutex.ReleaseMutex();
}
else
{
var messageText = "nostart";
MessageBox.Show(messageText, System.Windows.Application.Current.Resources["ApplicaionTitle"].ToString(), MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly);
this.Shutdown();
}
}
catch (Exception ex)
{
throw ex;
}
}
[mcve] 게시 게시를 고려하십시오. 적어도 관련 코드를 공유하십시오. 우리는 (나쁜) 추측 만 할 수 있습니다. – Fildor
@Fildor 최소한과 박탈 된 예제로 편집했습니다 – DECAFBAD
그게 문제인지는 모르겠지만 앱이 처음 시작될 때 - 닫을 때까지 'OnStartup' 이벤트 처리기를 떠나지 않을 것입니다 ... – Fildor