2017-11-08 10 views
1

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; 
     } 
     } 
+2

[mcve] 게시 게시를 고려하십시오. 적어도 관련 코드를 공유하십시오. 우리는 (나쁜) 추측 만 할 수 있습니다. – Fildor

+0

@Fildor 최소한과 박탈 된 예제로 편집했습니다 – DECAFBAD

+0

그게 문제인지는 모르겠지만 앱이 처음 시작될 때 - 닫을 때까지 'OnStartup' 이벤트 처리기를 떠나지 않을 것입니다 ... – Fildor

답변

0

이것을 시도

+0

감사합니다. 전에 - 그리고 작동하지 않았다 – DECAFBAD