|
|
|
@ -24,12 +24,27 @@ namespace MediaBrowser.ServerApplication
|
|
|
|
|
/// </summary>
|
|
|
|
|
public partial class App : Application
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The single instance mutex
|
|
|
|
|
/// </summary>
|
|
|
|
|
private static Mutex _singleInstanceMutex;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Defines the entry point of the application.
|
|
|
|
|
/// </summary>
|
|
|
|
|
[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
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The single instance mutex
|
|
|
|
|
/// </summary>
|
|
|
|
|
private Mutex SingleInstanceMutex;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets or sets the logger.
|
|
|
|
|
/// </summary>
|
|
|
|
@ -107,15 +117,6 @@ namespace MediaBrowser.ServerApplication
|
|
|
|
|
/// <param name="e">A <see cref="T:System.Windows.StartupEventArgs" /> that contains the event data.</param>
|
|
|
|
|
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,23 +191,26 @@ namespace MediaBrowser.ServerApplication
|
|
|
|
|
|
|
|
|
|
base.OnExit(e);
|
|
|
|
|
|
|
|
|
|
if (CompositionRoot != null)
|
|
|
|
|
{
|
|
|
|
|
CompositionRoot.Dispose();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Releases the mutex.
|
|
|
|
|
/// </summary>
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|