diff --git a/MediaBrowser.ServerApplication/App.xaml.cs b/MediaBrowser.ServerApplication/App.xaml.cs index f446b4dc4b..3c1524eec4 100644 --- a/MediaBrowser.ServerApplication/App.xaml.cs +++ b/MediaBrowser.ServerApplication/App.xaml.cs @@ -24,12 +24,27 @@ namespace MediaBrowser.ServerApplication /// public partial class App : Application { + /// + /// The single instance mutex + /// + private static Mutex _singleInstanceMutex; + /// /// Defines the entry point of the application. /// [STAThread] public static void Main() { + bool createdNew; + + _singleInstanceMutex = new Mutex(true, @"Local\" + typeof(App).Assembly.GetName().Name, out createdNew); + + if (!createdNew) + { + _singleInstanceMutex = null; + return; + } + // Look for the existence of an update archive var appPaths = new ServerApplicationPaths(); var updateArchive = Path.Combine(appPaths.TempUpdatePath, Constants.MbServerPkgName + ".zip"); @@ -66,11 +81,6 @@ namespace MediaBrowser.ServerApplication } } - /// - /// The single instance mutex - /// - private Mutex SingleInstanceMutex; - /// /// Gets or sets the logger. /// @@ -107,15 +117,6 @@ namespace MediaBrowser.ServerApplication /// A that contains the event data. protected override void OnStartup(StartupEventArgs e) { - bool createdNew; - SingleInstanceMutex = new Mutex(true, @"Local\" + GetType().Assembly.GetName().Name, out createdNew); - if (!createdNew) - { - SingleInstanceMutex = null; - Shutdown(); - return; - } - AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; LoadKernel(); @@ -190,7 +191,10 @@ namespace MediaBrowser.ServerApplication base.OnExit(e); - CompositionRoot.Dispose(); + if (CompositionRoot != null) + { + CompositionRoot.Dispose(); + } } /// @@ -198,15 +202,15 @@ namespace MediaBrowser.ServerApplication /// private void ReleaseMutex() { - if (SingleInstanceMutex == null) + if (_singleInstanceMutex == null) { return; } - SingleInstanceMutex.ReleaseMutex(); - SingleInstanceMutex.Close(); - SingleInstanceMutex.Dispose(); - SingleInstanceMutex = null; + _singleInstanceMutex.ReleaseMutex(); + _singleInstanceMutex.Close(); + _singleInstanceMutex.Dispose(); + _singleInstanceMutex = null; } ///