diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index 57e30479b3..a6a728698a 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/MediaBrowser.Controller/Kernel.cs @@ -66,15 +66,18 @@ namespace MediaBrowser.Controller public async override Task Init(IProgress progress) { - await base.Init(progress); + await Task.Run(async () => + { + await base.Init(progress); - progress.Report(new TaskProgress() { Description = "Loading Users", PercentComplete = 15 }); - ReloadUsers(); + progress.Report(new TaskProgress() { Description = "Loading Users", PercentComplete = 15 }); + ReloadUsers(); - progress.Report(new TaskProgress() { Description = "Loading Media Library", PercentComplete = 20 }); - await ReloadRoot(); + progress.Report(new TaskProgress() { Description = "Loading Media Library", PercentComplete = 20 }); + await ReloadRoot(); - progress.Report(new TaskProgress() { Description = "Loading Complete", PercentComplete = 100 }); + progress.Report(new TaskProgress() { Description = "Loading Complete", PercentComplete = 100 }); + }); } protected override void OnComposablePartsLoaded() diff --git a/MediaBrowser.ServerApplication/App.xaml b/MediaBrowser.ServerApplication/App.xaml index 0188116c8c..3792e5bacf 100644 --- a/MediaBrowser.ServerApplication/App.xaml +++ b/MediaBrowser.ServerApplication/App.xaml @@ -1,8 +1,7 @@  + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> - + diff --git a/MediaBrowser.ServerApplication/App.xaml.cs b/MediaBrowser.ServerApplication/App.xaml.cs index 9b6d792868..de8a1114e7 100644 --- a/MediaBrowser.ServerApplication/App.xaml.cs +++ b/MediaBrowser.ServerApplication/App.xaml.cs @@ -1,8 +1,12 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Threading.Tasks; using System.Windows; +using MediaBrowser.Common.Logging; +using MediaBrowser.Common.UI; using MediaBrowser.Controller; +using MediaBrowser.Model.Progress; using Microsoft.Shell; namespace MediaBrowser.ServerApplication @@ -21,12 +25,50 @@ namespace MediaBrowser.ServerApplication { var application = new App(); application.InitializeComponent(); + application.Run(); + // Allow single instance code to perform cleanup operations SingleInstance.Cleanup(); } } + protected async override void OnStartup(StartupEventArgs e) + { + this.ShutdownMode = ShutdownMode.OnExplicitShutdown; + + await LoadKernel(); + } + + private async Task LoadKernel() + { + Progress progress = new Progress(); + Splash splash = new Splash(progress); + + splash.Show(); + + try + { + DateTime now = DateTime.Now; + + await new Kernel().Init(progress); + + double seconds = (DateTime.Now - now).TotalSeconds; + + Logger.LogInfo("Kernel.Init completed in {0} seconds.", seconds); + splash.Close(); + + this.ShutdownMode = System.Windows.ShutdownMode.OnLastWindowClose; + new MainWindow().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show("There was an error launching Media Browser Server: " + ex.Message); + splash.Close(); + Shutdown(1); + } + } + #region ISingleInstanceApp Members public bool SignalExternalCommandLineArgs(IList args) { diff --git a/MediaBrowser.ServerApplication/MainWindow.xaml b/MediaBrowser.ServerApplication/MainWindow.xaml index 753db48328..f768e1b225 100644 --- a/MediaBrowser.ServerApplication/MainWindow.xaml +++ b/MediaBrowser.ServerApplication/MainWindow.xaml @@ -4,7 +4,7 @@ xmlns:tb="http://www.hardcodet.net/taskbar" Title="MainWindow" Height="350" Width="525" AllowsTransparency="True" Background="Transparent" WindowStyle="None" ShowInTaskbar="False"> - + diff --git a/MediaBrowser.ServerApplication/MainWindow.xaml.cs b/MediaBrowser.ServerApplication/MainWindow.xaml.cs index 67e20b2a21..2e087a7912 100644 --- a/MediaBrowser.ServerApplication/MainWindow.xaml.cs +++ b/MediaBrowser.ServerApplication/MainWindow.xaml.cs @@ -1,10 +1,5 @@ -using System; -using System.Diagnostics; +using System.Diagnostics; using System.Windows; -using MediaBrowser.Common.Logging; -using MediaBrowser.Common.UI; -using MediaBrowser.Controller; -using MediaBrowser.Model.Progress; namespace MediaBrowser.ServerApplication { @@ -16,38 +11,7 @@ namespace MediaBrowser.ServerApplication public MainWindow() { InitializeComponent(); - LoadKernel(); - } - - private async void LoadKernel() - { - Progress progress = new Progress(); - Splash splash = new Splash(progress); - - splash.Show(); - - try - { - DateTime now = DateTime.Now; - - await new Kernel().Init(progress); - - double seconds = (DateTime.Now - now).TotalSeconds; - - Logger.LogInfo("Kernel.Init completed in {0} seconds.", seconds); - - // Don't show the system tray icon until the kernel finishes. - this.MbTaskbarIcon.Visibility = System.Windows.Visibility.Visible; - } - catch (Exception ex) - { - MessageBox.Show("There was an error launching Media Browser Server: " + ex.Message); - Close(); - } - finally - { - splash.Close(); - } + //LoadKernel(); } #region Context Menu events @@ -66,7 +30,7 @@ namespace MediaBrowser.ServerApplication private void cmExit_click(object sender, RoutedEventArgs e) { - this.Close(); + Close(); } #endregion