在Windows 10

时间:2017-11-08 07:19:29

标签: c# wpf windows-10 prism

我在C#/ WPF / Prism应用程序中遇到了可疑问题。我做了一个方法来阻止第二次和更多的执行借助互斥锁。这适用于Windows 7.当我尝试使用Windows 10运行此应用程序时,应用程序首先按预期启动,第二次启动有时会导致仅显示我的错误消息,但主要是显示我的错误消息,并在单击确定后,弹出一个Windows对话框,显示"程序已停止工作"。在Windows 10系统的事件日志中是一个新的应用程序日志条目

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: 

如果我在this.shutdown之后添加一个Messagebox.Show语句,则该过程在Windows 10下运行正常,但这可能不是一个正确的解决方案。

这个东西只有在应用程序通过双击运行在Visual Studio中运行时才会发生这种情况不能重现这种不当行为。我还附加了一个全局异常处理,它也没有带来这个错误。

感谢您帮助找到解决方案。

编辑:最小示例

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

1 个答案:

答案 0 :(得分:0)

试试这个 - Environment.Exit(0);